在VisualDSP+中使用#ifdef"语言"C的目的是什么+;?

在VisualDSP+中使用#ifdef"语言"C的目的是什么+;?,c,compiler-construction,embedded,C,Compiler Construction,Embedded,我正在使用VisualDSP++v修改Blackfin处理器的一些代码。5.0. 我注意到,此项目中的所有头文件都使用以下约定: #ifdef _LANGUAGE_C /* All of the code associated with this header file. */ #endif 在搜索该编译器的文档后,我发现了以下内容: _语言C-始终定义为1 所以我的问题是双重的 使用#ifdef_LANGUAGE_C的目的是什么 这难道不会阻止您的代码在可能没有为\u LANGUAGE

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

#ifdef _LANGUAGE_C

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

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

_语言C-始终定义为1

所以我的问题是双重的

  • 使用
    #ifdef_LANGUAGE_C
    的目的是什么
  • 这难道不会阻止您的代码在可能没有为
    \u LANGUAGE\u C
    定义宏的其他编译器上运行吗

  • 要回答你的复合问题,答案大部分是肯定的。这是一些预处理器指令的一部分,这些指令允许您使用相同的代码为不同的环境构建。例如,如果您查看windows驱动程序工具包,您会发现这种约定被广泛使用,以确保根据目标环境和编译器生成最高效的代码。我希望这是有帮助的。它可能在C++的IFDEF之后添加了另一个代码,用于另一个语言语言,并在C++中指定C++的特定代码。< /P> < p>回答你的复合问题,答案是肯定的,大部分是。这是一些预处理器指令的一部分,这些指令允许您使用相同的代码为不同的环境构建。例如,如果您查看windows驱动程序工具包,您会发现这种约定被广泛使用,以确保根据目标环境和编译器生成最高效的代码。我希望这是有帮助的。它可能在后面添加了一个潜在的代码,其中的另一个是用于.LyfIDEAXCPP和另一个C++特定代码,等等。

    它被称为编译常量,这样的编译常量必须添加到构建环境中,您应该检查生成环境。它告诉编译器,它要编译的代码将使用C特定的检查进行编译,并将根据这一点生成输出文件(十六进制或二进制)。

    它被称为编译常量,必须将此类编译常量添加到您的生成环境中,您应该检查您的生成环境。它告诉编译器,它要编译的代码将使用C特定的检查进行编译,并将根据这一点生成输出文件(十六进制或二进制)。

    您必须了解它在上下文中的使用方式,然而,我相信在这种情况下,它被用于C代码和汇编程序中使用的头文件中,其中汇编程序代码使用C预处理器。它允许在汇编代码中包含C头,并让预处理器删除C代码特定的元素

    例如,在汇编代码中使用与C代码相同的
    #define…
    常量宏值是很有用的,以避免重复和不一致,但例如
    结构定义或函数原型将毫无意义


    我想:如果C++定义了代码(>语言),(但是,如果文档说明它总是被定义,那么它可能是针对C和C++编译的,在你的例子中,

    你必须看它是如何在上下文中使用的,然而,我相信在这种情况下,它被用于C代码和汇编程序中使用的头文件中,其中汇编程序代码使用C预处理器。它允许在汇编代码中包含C头,并让预处理器删除C代码特定的元素

    例如,在汇编代码中使用与C代码相同的
    #define…
    常量宏值是很有用的,以避免重复和不一致,但例如
    结构定义或函数原型将毫无意义


    我想:如果代码(>语言)定义(AyLoalGraceCpulsUPPLUS),但是如果文档总是定义的话,也许它是针对C和C++编译的,在你的情况下。

    “这不会仅仅让你的代码不在一个不同的编译器上运行吗?对于一个可能没有定义的语言来说?”--小心。。。没有编译器对此有定义。@JimBalter:很公平,我应该说“一个可能没有为_LANGUAGE_C定义宏的编译器”。您可以编辑您的问题以删除错误(这是拼写错误,而不是定义与宏)。“这难道不会阻止您的代码在可能没有“语言”定义的其他编译器上运行吗?”--小心……没有编译器有这方面的定义。@JimBalter:很公平,我应该说“可能没有为“语言”定义宏的编译器”。您可以编辑您的问题以删除错误(这是拼写错误,而不是定义与宏)。在本例中,它是编译器预定义的宏,因此不应显式添加到生成环境中。当在汇编代码中使用头文件时,它用于从头文件中删除C结构。在本例中,它是编译器预定义的宏,因此不应显式添加到生成环境中。它用于从头文件中删除C结构在汇编代码中使用的文件。