【发布时间】:2021-10-02 00:38:50
【问题描述】:
我正在尝试获取一堆 1994 年为 Panasonic 3DO lib 编写的 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 '\'
如果您知道为什么要使用这些 \ 字符,请解释一下吗? (对不起,如果它是一个菜鸟问题)另外,有没有另一种方法来写这个,所以编译器很高兴?
【问题讨论】:
-
尝试使用编译器未标记为错误的宏。
-
显示的代码本身应该很好。暗中刺探:通过
dos2unix运行所有.c和.h文件。如果解决了,我会解释的。如果没有,我们将需要您构建我们称之为MCVE 的东西——一个最小但完整的示例程序,我们可以自己编译它并得到与您遇到的相同的错误。 -
确保反斜杠字符后没有任何空格 - 它必须是该行的最后一个字符。
-
请注意,1994 年编写的用于在视频游戏机上运行的程序很可能因其他几个原因而被现代 C 编译器所反对。
-
@JohnBode 感谢您的提示。我从 Macintosh 风格的行尾更改为 Unix 风格,错误消失了:)