0

我正在使用 Microchip 的 XC16 编译器为 Microchip dspic33 系列处理器编译代码。

我有一些在多个应用程序中使用的代码(即它在代码库中)。对于某些模块,我想确保在编译期间设置某些编译器标志,最好使用预处理器。特别是,我对测试 -mauxflash 和 -code-in-auxflash 目标标志感兴趣。

有没有办法在编译期间测试编译器选项?

我尝试使用 xc16-gcc -dM -E - < /dev/null 转储所有#defines,但似乎没有任何改变。有 3 个与 auxflash 相关的定义(AUXFLASH_LENGTH、__AUXFLASH_BASE 和 __HAS_AUXFLASH),但与目标标志无关。

4

1 回答 1

2

并非所有标志都会影响 CPP 定义,因此您可能是 SOL。您的使用-dM -E是最好的检查方式。

但是,有一些功能可能对您有用:

  1. -grecord-gcc-switches:这会在 DWARF 信息中记录每个对象在编译时使用的所有标志。然后,您可以有一个脚本来检查对象并在没有您关心的标志的情况下构建一个错误并引发错误。
  2. __attribute__((optimize("flags"))): gcc 允许您在每个函数的基础上强制使用特定的标志。
  3. #pragma GCC optimize ("flags"): gcc 允许您在文件级别强制使用特定标志。
于 2016-03-10T00:12:11.397 回答