【发布时间】:2014-06-17 14:06:05
【问题描述】:
我正在寻找一种创造性的解决方案,以确保传递给特定宏的变量在 C 语言中使用 volatile 类型声明,并使用 TMS470 编译器。意思:
好方法:
volatile int *_p_reg;
VOLATILE_MACRO(_p_reg);
编译失败:
int *_p_reg;
VOLATILE_MACRO(_p_reg);
我希望在编译后执行验证,这意味着检查反汇编或调试信息并识别那些调用。 我似乎在调试信息中找不到任何 volatile 的证据。
有什么想法吗?
谢谢!
【问题讨论】:
-
我怀疑实现这一点的唯一方法是在编译时生成错误。生成代码后,您可能会丢失任何可能对您有帮助的信息。
-
1.如何在编译时使编译失败? (因为它不是 cpp ......)。 2.有没有办法从调试信息中确定挥发物?
-
我想C11的时尚
_Generic关键字可以用于这个目的。虽然更...通用的解决方案是获得一个比 C 编译器具有更严格类型检查的静态分析器。 -
您也可以为此进行 gcc 扩展 - 我有一个编译时和运行时解决方案,我刚刚测试过它们似乎可以工作 - 让我知道这是否可能有用(即,如果您可以安全地假设 gcc 或与 gcc 兼容的编译器),我将发布详细信息作为答案。
-
Lundin - _Generic 对我来说是一个很好的解决方案,我只需要确定 TMS470 是否支持这个选项是不是很重要。它也算作 gcc 扩展吗?
标签: c volatile post-processing tms