[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Tinycc-devel] #if's inside __VA_ARGS__ messing up macro expansion
From: |
Petr Skocik |
Subject: |
[Tinycc-devel] #if's inside __VA_ARGS__ messing up macro expansion |
Date: |
Tue, 17 Apr 2018 20:01:46 +0200 |
I've been using the following macros for autotypedefed structs,
unions, and enums in C
#define Struct(Nm,...) typedef struct Nm Nm; struct Nm __VA_ARGS__
#define Union(Nm,...) typedef union Nm Nm; union Nm __VA_ARGS__
//^... used for uniformity with enums, which may only be typedefed
after the fact
#define Enum(Nm,...) enum Nm __VA_ARGS__; typedef enum Nm Nm; enum Nm
and I've run into the following problem with tcc (clang and gcc handle it fine):
If the ... body (__VA_ARGS__)contains an #if (#ifdef/#ifndef don't
have this problem), the whole surrounding
macros gets misexpanded:
/*this whole thing expands to the value of NDEBUG (e.g., `1;`) on tcc
*/
Struct(foo_struct,{
int x;
#if NDEBUG
char *y;
#endif
double z;
});
I don't know how to fix it, so I just wanted to put it out there
in case somebody does.
Regards,
Petr S.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Tinycc-devel] #if's inside __VA_ARGS__ messing up macro expansion,
Petr Skocik <=