有没有办法在gcc 中编译时只使用编译器设置/标志来禁用volatile存储类而不修改底层源代码?
实施例
volatile int x;
.. use x ..
需要像编写一样进行编译:
int x;
.. use x ..
答案 0 :(得分:2)
使用
进行编译gcc -Dvolatile="" ...
以便预处理器将每个volatile
替换为空字符串。如果您只使用-Dvolatile
,volatile
将替换为1,这将导致编译错误。
因为volatile
关键字告诉编译器该值可能在任何时候发生变化并且它永远不会缓存该值,所以从工作代码中省略它们可能会导致出现错误(因为编译器有时会在陈旧时工作)值)。