joe.cc:84:21: error: conflicting declaration of 'int yylex()' with 'C' linkage 84 | #define YY_DECL int yylex (void) | ^~~~~ joe.cc:85:12: note: in expansion of macro 'YY_DECL' 85 | extern "C" YY_DECL; | ^~~~~~~ joe.cc:32:6: note: previous declaration with 'C++' linkage 32 | int yylex(void); | ^~~~~
I'm sorry, but I don't know what to do. Apparently the error is intentional in gcc10 (I think it's about gcc10, not Solaris), and the same identifier can't be defined in two language "linkage" namespaces. So how is anyone supposed to write code that works under both C and C++ any more? I'm obviously missing something fundamental. Anyway, in the particular case at hand, those tests include the code: #define YY_DECL int yylex (void) extern "C" YY_DECL; .. extern "C" int yylex (void); I assume it was written that way because it had to be. So I don't know how to change it to placate the compiler (and still work with older compilers). Paul, Jim, anyone? Thanks for the report, Karl