Hi,
I get errors compiling these macros:
#define MYMACRO(name, service_name, ...) \ static struct service_name name##_interface = __VA_ARGS__ ; \ struct service name = { NULL, NULL, service_name##_name, & name##_interface } #endif
The errors are: C301: identifier expected C301: identifier expected C304: bad macro parameter list
Does the C51 support variable arguments in macros? If not, any work arounds?
Regards, Umar
"Does the C51 support variable arguments in macros"
Does any standard 'C' preprocessor support variable arguments in macros?!
"Does any standard 'C' preprocessor support variable arguments in macros?!"
C99 does, but the manual should tell the OP that C51 does not conform to C99.
GCC has had variadic macros for a while. In fact, that compiler has lots of extensions to C and C++, which sometimes trips people up when they switch to a standard compiler.
Some of the GCC extensions got adopted in C99, including var args for macros and variable length arrays.
Does Keil have any plans to implement C99 compliance? (It's only been seven years... if we're not careful they'll issue C09 before the work can be finished.)
Does Keil have any plans to implement C99 compliance?
Not at the current time. However, if customer demands dictate, we may augment the compiler with features of the C99 Specification.
For more information about the history of C, refer to the following knowledgebase article:
http://www.keil.com/support/docs/1893.htm
Jon
Yes indeed C99 compliance would be great. The closer C51 is to prevalent compilers out in the market the better.
Thanks for the info.
Umar
Is C99 yet the "prevalent" version in the market?
Particularly in the 8051-class market?