繁体   English   中英

错位的预处理器字符 '\\'

[英]Misplaced preprocessor character '\'

我正在尝试使用 1994 年为松下 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 '\'

如果您知道为什么使用这些 \\ 字符,请解释一下? (对不起,如果它是一个菜鸟问题)另外,是否有其他方法可以编写此代码以便编译器满意?

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

我可以想到两个原因:

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

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

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

    这是一个很常见的问题,一次又一次地打击我。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM