c - 在 VisualDSP++ 中使用#ifdef _LANGUAGE_C 的目的是什么?

标签 c compiler-construction embedded

我正在使用 VisualDSP++ v. 5.0 修改 Blackfin 处理器的一些代码。我注意到该项目中的所有头文件都使用以下约定:

#ifdef _LANGUAGE_C

/* All of the code associated with this header file. */

#endif

在搜索此编译器的文档后,我发现了以下内容:

_LANGUAGE_C - Always defined as 1.

所以我的问题有两个方面。

  1. 使用#ifdef _LANGUAGE_C 的目的是什么?
  2. 这不会阻止您的代码在可能没有为 _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/

相关文章:

c++ - 如何在 Visual Studio 2008 中优化构建速度

c - pic32 起始位未清除——基本 I2C 设置

C99 boolean 数据类型?

java - 在 applet 或 Google AppEngine 中托管 Java 编译器?

java - Struts2 中 getContextMap() 和 getValueStack() 之间的区别?

c - 如何在 IAR IDE Watch 窗口中通过指针显示数组范围?

embedded - 复位时嵌入式系统会发生什么?

C编程指针char数组

c - 如何删除C中的文本?

c - 如何在二维数组中赋值