我正在使用 VisualDSP++ v. 5.0 修改 Blackfin 处理器的一些代码。我注意到该项目中的所有头文件都使用以下约定:
#ifdef _LANGUAGE_C
/* All of the code associated with this header file. */
#endif
在搜索此编译器的文档后,我发现了以下内容:
_LANGUAGE_C - Always defined as 1.
所以我的问题有两个方面。
- 使用
#ifdef _LANGUAGE_C
的目的是什么? - 这不会阻止您的代码在可能没有为
_LANGUAGE_C
定义宏的不同编译器上运行吗?
最佳答案
您必须查看它在上下文中的使用方式,但我相信在这种情况下,它用于 C 代码和汇编器中使用的 header 中,其中汇编器代码使用 C 预处理器。它允许将 C header 包含在汇编代码中,并让预处理器删除 C 代码特定元素。
例如,在汇编代码中使用与 C 代码相同的 #define ...
常量宏值以避免重复和不一致是很有用的,但是 struct
例如,定义或函数原型(prototype)将毫无意义。
我可能希望:#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS)
,但是如果文档说它总是被定义,那么在你的情况下它可能是为 C 和 C++ 编译定义的。
关于c - 在 VisualDSP++ 中使用#ifdef _LANGUAGE_C 的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11024949/