Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 为什么赢了';这个交换宏不能编译吗?_C - Fatal编程技术网

C 为什么赢了';这个交换宏不能编译吗?

C 为什么赢了';这个交换宏不能编译吗?,c,C,《K&R第二版答题手册》针对变量参数交换宏提供了以下解决方案 #define swap(t, x, y) { t _z; \ _z = y; \ y = x; \ x = _z; } Visual Studio Express告诉我y和x必须是常量,并且右大括号的左侧有一个“预期声明” 这个格式过时了吗 编辑: 代码的格式化方式不允许我针对上面

《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; }

问题是
\
行连续字符后有空格。因此,
\
不再被视为行连续符,而只是一个非空白字符。这意味着以下行不是宏定义的一部分,编译器会尝试将它们编译为普通行。清除每个
\
后面的空白将修复错误。

如何调用它?您是否尝试过交换(int,xx,yy)
int xx,yy之后?如何使用宏?它应该是
swap(int,a,b)
我甚至还没有编译任何东西。它不会让我编译它,因为上面有我发布的错误。