这个预处理器线是什么意思?

时间:2016-03-05 00:34:42

标签: gcc c-preprocessor

我正在使用gcc开发一个带有ADOL-C库(用于自动区分)的项目。现在我正在尝试重新编译库以使用并行化功能,但是由于某些预处理器的原因,make进程显然不起作用。

我认为有问题的一行是:

...
data: {'action': 'addCu', 'data': customer},
...

但是我找不到它的含义。它是否在两个变量之间建立联系?此外,ADOLC_threadNumber尚未在...之前声明。

3 个答案:

答案 0 :(得分:3)

预处理器甚至不知道变量是什么。 #define所做的只是定义一个用于声明变量的短(长?)手。即,如果你输入

ADOLC_OPENMP_THREAD_NUMBER;

变成

int ADOLC_threadNumber;

答案 1 :(得分:0)

它只是一个文本替换。在int ADOLC_threadNumber出现的代码中的任何地方,它都被ADOLC_OPENMP_THREAD_NUMBER替换。

据我所知,定义本身的行没有问题,但可能随后出现{{1}}。但是,要检查这一点,我们需要了解有关上下文的更多信息。

答案 2 :(得分:0)

#define .h 文件中经常使用的指令, 它创建一个宏,它是标识符或参数化标识符与令牌字符串的关联。 定义宏之后,编译器可以在源文件中为标识符的每次出现替换令牌字符串。

#define 可能与 #ifndef 指令相关联,以避免多次声明标识符:

#ifndef ADOLC_OPENMP_THREAD_NUMBER
#define ADOLC_OPENMP_THREAD_NUMBER int ADOLC_threadNumber
#endif