polyspace代码验证:宇宙编译器问题

3视图(30天)
你好所有的,
Polyspace不承认的“如果”构造宇宙的编译器。解决了这个问题吗?
错误: 这个操作符是不允许一个预处理表达式
#如果(__XGATE_CHECK_VAR__ = =“X”)
^
代码:
#如果定义(MAKE_DEPEND)
/ * GNU编译器不理解以下if-directive = >使依赖发电机工作……* /
其他#
#定义__XGATE_CHECK_VAR__ __TRGT__ [0]
#如果(__XGATE_CHECK_VAR__ = =“X”)
其他#
#定义V_MEMRAM1_FAR @gpage * / / * MCS12x部分
#如果(V_COMPVERSION > = 407)
#定义V_MEMRAM3_FAR @far * / / * MCS12x部分
其他#
#定义V_MEMRAM3_FAR * / / * MCS12x部分
# endif
# endif
# endif
# endif

答案(2)

Anirban
Anirban 2020年12月4日
编辑:Anirban 2020年12月4日
你好,
并不是 #如果 本身,而是 [0] __TRGT__ [0] 导致这个问题。标准后,Polyspace不支持评估预处理器指令的表达式。万博1manbetx一些编译器允许,但它不支持Polyspace。万博1manbetx
有几个非侵入性方法来解决这个问题,但是都涉及有效地取代 __TRGT__ [0] 与其他东西的目的分析:
  • 假设这个代码出现在标题,您可以让头和替换的一个副本__TRGT__ [0]与别的东西(这取决于你想要的#如果其他#要分析分支)。您可以将这个文件夹复制在一个单独的文件夹,并提供第一包括在项目文件夹中。这将导致头覆盖实际头的副本在分析。
  • 您可以使用的选项-regex-replace-rgx和-regex-replace-fmt使更换无需修改实际的源代码。

Karpakam萨勃拉曼尼亚
Karpakam萨勃拉曼尼亚 2020年12月7日
你好Anirban,
谢谢你的建议。会提供的解决方案,谢谢。