lexborisov / Modest

Modest is a fast HTML renderer implemented as a pure C99 library with no outside dependencies.
GNU Lesser General Public License v2.1
732 stars 65 forks source link

Нельзя использовать Modest с C++ из-за typedef до реального объявления enum :( #1

Closed Azq2 closed 7 years ago

Azq2 commented 7 years ago
external/Modest/include/mycss/values/values.h:37:14: error: use of enum ‘mycss_values_text_decoration_line’ without previous declaration
 typedef enum mycss_values_text_decoration_line mycss_values_text_decoration_line_t;
              ^
external/Modest/include/mycss/values/values.h:37:83: error: invalid type in declaration before ‘;’ token
 typedef enum mycss_values_text_decoration_line mycss_values_text_decoration_line_t;
                                                                                   ^
external/Modest/include/mycss/values/values.h:38:14: error: use of enum ‘mycss_values_text_decoration_skip’ without previous declaration
 typedef enum mycss_values_text_decoration_skip mycss_values_text_decoration_skip_t;
              ^
external/Modest/include/mycss/values/values.h:38:83: error: invalid type in declaration before ‘;’ token
 typedef enum mycss_values_text_decoration_skip mycss_values_text_decoration_skip_t;
                                                                                   ^
external/Modest/include/mycss/values/values.h:41:14: error: use of enum ‘mycss_values_color_type’ without previous declaration
 typedef enum mycss_values_color_type mycss_values_color_type_t;
              ^
external/Modest/include/mycss/values/values.h:41:63: error: invalid type in declaration before ‘;’ token
 typedef enum mycss_values_color_type mycss_values_color_type_t;
                                                               ^
external/Modest/include/mycss/values/values.h:42:14: error: use of enum ‘mycss_values_color_type_value’ without previous declaration
 typedef enum mycss_values_color_type_value mycss_values_color_type_value_t;
              ^
external/Modest/include/mycss/values/values.h:42:75: error: invalid type in declaration before ‘;’ token
 typedef enum mycss_values_color_type_value mycss_values_color_type_value_t;
                                                                           ^
external/Modest/include/mycss/values/values.h:52:14: error: use of enum ‘mycss_values_font_family_type’ without previous declaration
 typedef enum mycss_values_font_family_type mycss_values_font_family_type_t;
              ^
external/Modest/include/mycss/values/values.h:52:75: error: invalid type in declaration before ‘;’ token
 typedef enum mycss_values_font_family_type mycss_values_font_family_type_t;

В C++ не работает вот такое:

typedef enum a b;
enum a {A = 1};
azq2@zhumarin:~/проекты/symfony$ gcc  test.c
azq2@zhumarin:~/проекты/symfony$ g++ test.c
test.c:1:14: error: use of enum ‘a’ without previous declaration
 typedef enum a b;
              ^
test.c:1:17: error: invalid type in declaration before ‘;’ token
 typedef enum a b;
                 ^
Azq2 commented 7 years ago

После переноса enum'ов больше не было проблем с C++

lexborisov commented 7 years ago

Thanks! Fixed! Это я увлекся копированием, так делать, конечно же, не надо.

Azq2 commented 7 years ago

Теперь всё ок, спасибо)