#define CHECK(condition, label, ...) \
if (!(condition)) { \
fprintf(stderr, "%s, %s, %i\n", __FILE__, __func__, __LINE__); \
fprintf(stderr, ##__VA_ARGS__, ""); \
goto label; \
}
Ou bien c'est le ##__VA_ARGS__ qui te gêne ? Si tu veux éviter le fprintf(stderr, ""), tu peux ajouter if (*#__VA_ARGS__) devant...