微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决错位的预处理器字符 '\'

我正在尝试使用 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 '\'

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

解决方法

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

我能想到两个原因:

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

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

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。