This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] 编译器/CC3220:#define语法问题

Guru**** 2578945 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/598071/compiler-cc3220-define-syntax-issue

部件号:CC3220

工具/软件:TI C/C++编译器

我有一个#define用于包含另一个#define固件版本的字符串。  我在其他编译器上成功地使用了这种方法,但TI的编译器似乎不喜欢它。

 

//这不编译,我收到错误“预期a;”

#define firmware version                    “0.0 ”(定义固件版本)

#define MQTT_WARE_MESSAGE                "{\"firmware\":\"固件版本\",\"代码\":\"将消息\"}"

 

//这是编译的,我只是手动替换了文本

#define MQTT_WARE_MESSAGE                "{\"firmware\":\"" 0.0 .1""\",\"code\":\"WARE_MESSAGE\"}"

是否有任何变通办法或想法?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    第一个宏中的固件和版本之间是否应该有下划线?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的,它在那里,只是一个打字错误。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我无法重现此问题。  请提交测试案例。

    通常,我会要求提供预处理的源文件。  这在这种情况下不起作用。  预处理是出现问题的地方。

    请尝试将测试用例缩减为一个源文件,并尽可能少地压缩头文件。  将所有这些都压缩到下一个帖子中。  指示您使用的编译器版本(而不是CCS)。  准确显示编译器看到的所有生成选项。

    谢谢,此致,

    -George

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我发现了这个问题。  我将firmware_version的#define移动到另一个头文件,并忘记更新引用它的#include。