我使用下面在我的C程序中提到的宏来开发POS应用程序。当我编译这段代码时,程序错误中会出现流浪'\'。任何人都可以帮助我解决这个问题吗?编译时程序错误中遗漏''
#define FF(a, b, c, d, x, s, ac) \
{(a) += F ((b), (c), (d)) + (x) + (UINT4)(ac); \
(a) = ROTATE_LEFT ((a), (s)); \
(a) += (b); \
}
我使用下面在我的C程序中提到的宏来开发POS应用程序。当我编译这段代码时,程序错误中会出现流浪'\'。任何人都可以帮助我解决这个问题吗?编译时程序错误中遗漏''
#define FF(a, b, c, d, x, s, ac) \
{(a) += F ((b), (c), (d)) + (x) + (UINT4)(ac); \
(a) = ROTATE_LEFT ((a), (s)); \
(a) += (b); \
}
大多数编译器都提供了一些获取代码预处理形式的方法。用gcc
它是gcc -C -E source.c > source.i
;你应该看看这种形式。在Linux下,我有时会这样做:
gcc -C -E source.c | grep -v '^#' | indent > source.i
gcc -Wall -c source.i
grep -v '^#'
正在删除生成的行编号。然后我在错误位置查看source.i
,我明白我的宏有什么问题。
错误消息应该引用一个行号。它是否指向宏定义(如果是这样,哪一行)或者宏的调用?这个调用是什么样子的?你能向我们展示一个能证明问题的小型完整源文件吗?每个'\'在行的最后,没有尾随空格? (上面为我编译没有错误。) –
@itsnikki - 找到解决方案后,您不应该更正问题中的代码,因为这会使答案看起来很有趣。 –
@BoPersson:根据OP的评论,空白行不在导致问题的代码中 - 而且在空白行中,它可能不会产生该错误消息。 –