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
提案をありがとう、