问题描述
我正在尝试使用 1994 年为 Panasonic 3DO 库编写的一堆 C 模块,以便使用 armcc 进行编译。我遇到了一个令我感到困惑的错误。我对 C 的了解不是那么深,所以也许你们中的一个人会帮助我解决这个问题:
#define DS_MSG_HEADER \
long whatTodo; /* opcode determining msg contents */ \
Item msgitem; /* message item for sending this buffer */ \
void* privatePtr; /* ptr to sender's private data */ \
void* link /* user defined -- for linking msg into lists */
这个库的许多包含文件中都使用了 \ 字符,我不熟悉这种语法……而且 ARM 编译器似乎讨厌它。
SerIoUs error: misplaced preprocessor character '\'
如果您知道为什么使用这些 \ 字符,请解释一下? (对不起,如果它是一个菜鸟问题)另外,是否有其他方法可以编写此代码以便编译器满意?
解决方法
如果显示的反斜杠 '\'
不是行中的最后一个字符,则会显示此错误(以及其他原因)。
我能想到两个原因:
-
不知何故,您在反斜杠后至少有一个空格(空格、制表符)。
我从来没有遇到过这个问题。
-
源代码与 Windows 样式的行尾标记一起存储,即
'\r'
和'\n'
、“回车”和“换行”。并且您正在尝试在类 Unix 系统(Linux?)上或通过需要类 Unix 行尾标记的编译器编译它,即只有'\n'
,“换行符”。 (或者反过来。)这是一个很常见的问题,它一次又一次地打击我。
无论如何,在功能强大的编辑器中打开源代码并启用“不可见字符”的可见性,通常是带有此图标的选项:¶
。检查空格。然后检查行尾的编码。使用适当的保存。