|
5鱼币
按程序的原意应该是打印出来COUNTS()有 0 个参数,为啥程序运行结果却是有1个参数?哪里出了问题,请高手指教
- #include <stdio.h>
- #define ARGUMENTS(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, ...) A11
- #define COUNTS(...) ARGUMENTS(FISHC, ## __VA_ARGS__, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0)
- int main(void)
- {
- printf("COUNTS()有 %d 个参数。\n", COUNTS());
- printf("COUNTS(1, 2, 3)有 %d 个参数\n", COUNTS(1, 2, 3));
- printf("COUNTS("Apple", "Banana", "Cat", "Dog")有 %d 个参数\n", COUNTS("Apple", "Banana", "Cat", "Dog"));
- return 0;
- }
复制代码
你试试用命令行打包之后再运行
我看gcc命令行打包之后结果是正确的
下面是对比, 控制台窗口是我打包之后运行的 后面命令行是直接运行的
至于为什么不一样,好像是gcc在没有参数的时候没有把 ##__VA_ARGS__ 替换为空
就是没有参数的时候它还卡在那 所以结果就不对劲了 或许你开下优化就能正确显示了
|
最佳答案
查看完整内容
你试试用命令行打包之后再运行
我看gcc命令行打包之后结果是正确的
下面是对比, 控制台窗口是我打包之后运行的 后面命令行是直接运行的
至于为什么不一样,好像是gcc在没有参数的时候没有把 ##__VA_ARGS__ 替换为空
就是没有参数的时候它还卡在那 所以结果就不对劲了 或许你开下优化就能正确显示了
|