K&R 2nd ed answer book 具有以下可变参数交换宏的解决方案
#define swap(t, x, y) { t _z; \
_z = y; \
y = x; \
x = _z; }
Visual Studio Express 告诉我 y 和 x 必须是常量值,并且右大括号左侧有一个“预期声明”。
这种格式是否过时了?
编辑:
代码格式化的方式不会让我编译上面列出的错误,但下面的代码似乎没问题:
#define swap(t, x, y) { t _z; _z = y; y = x; x = _z; }
最佳答案
问题是 \
行继续字符后有空格。因此,\
不再被视为续行符,而只是一个非空白字符。这意味着以下几行不是宏定义的一部分,编译器会尝试将它们编译为普通行。去掉每个 \
后的空格将修复错误。
关于c - 为什么这个交换宏不能编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25592932/