0

我正在尝试获取一堆 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 '\'

如果您知道为什么使用这些 \ 字符,请解释一下?(对不起,如果它是一个菜鸟问题)另外,有没有另一种方法来写这个,所以编译器很高兴?

4

1 回答 1

4

'\'如果显示的反斜杠不是该行的最后一个字符,则会显示此错误(以及其他原因) 。

我可以想到两个原因:

  1. 不知何故,反斜杠后至少有一个空格(空格、制表符)。

    我从来没有遇到过这个问题。

  2. 源与 Windows 样式的行尾标记一起存储,即'\r'and '\n'、“回车”和“换行”。而且您正试图在类 Unix 系统(Linux?)上编译它,或者通过需要类 Unix 行尾标记的编译器来编译它,即只有'\n'“换行符”。(或者反过来。)

    这是一个非常普遍的问题,它一次又一次地困扰着我。

在任何情况下,在功能强大的编辑器中打开源代码并启用“不可见字符”的可见性,通常带有此图标的选项:。检查空格。然后检查行尾的编码。保存与适当的一个。

于 2021-07-26T05:58:08.293 回答