先看程序: #include <stdio.h> #define DEBUG(format, ...) printf(format, __VA_ARGS__) int main(int argc, char *argv[]) { DEBUG("info %d %d/n", 2, 3); return 0; } 如果写成这样: #include <stdio.h> #define DEBUG(format, ...) printf(format, __VA_ARGS__) int main(int argc, char *argv[]) { DEBUG("info /n"); return 0; } 编译会报错 改为这样就可以了: #include <stdio.h> #define DEBUG(format, ...) printf(format,/ ##__VA_ARGS__) int main(int argc, char *argv[]) { DEBUG("info /n"); return 0; }