gcc 4.7.2
c89
你好,
#define LOG_ERR(fmt, ...) \
fprintf(stderr, "[ERROR] %s:%d: error [%s] " fmt "\n", __func__, __LINE__, strerror(errno), ##__VA_ARGS__)
我正在这样使用它:
LOG_ERR("Failed to connect to message queue [ %d ]", msg_id);
fmt 已在 fprintf 语句中连接。这怎么可能?
我尝试对以下内容进行相同的操作以测试该概念,但因编译错误而失败:
/* Using char array */
const char name[] = "Joe";
printf("Hello how " name " how are you today?\n");
Using constant string literal
const char *name = "Joe";
printf("Hello how " name " how are you today?\n");
两者都给我以下错误:
expected ')' before name
非常感谢您的任何建议,