C 为什么赢了';这个交换宏不能编译吗?
《K&R第二版答题手册》针对变量参数交换宏提供了以下解决方案C 为什么赢了';这个交换宏不能编译吗?,c,C,《K&R第二版答题手册》针对变量参数交换宏提供了以下解决方案 #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; }
Visual Studio Express告诉我y和x必须是常量,并且右大括号的左侧有一个“预期声明”
这个格式过时了吗
编辑:
代码的格式化方式不允许我针对上面列出的错误进行编译,但以下代码似乎很好:
#define swap(t, x, y) { t _z; _z = y; y = x; x = _z; }
问题是
\
行连续字符后有空格。因此,\
不再被视为行连续符,而只是一个非空白字符。这意味着以下行不是宏定义的一部分,编译器会尝试将它们编译为普通行。清除每个\
后面的空白将修复错误。如何调用它?您是否尝试过交换(int,xx,yy)代码>在int xx,yy之后代码>?如何使用宏?它应该是swap(int,a,b)
我甚至还没有编译任何东西。它不会让我编译它,因为上面有我发布的错误。