我正在使用gcc开发一个带有ADOL-C库(用于自动区分)的项目。现在我正在尝试重新编译库以使用并行化功能,但是由于某些预处理器的原因,make进程显然不起作用。
我认为有问题的一行是:
...
data: {'action': 'addCu', 'data': customer},
...
但是我找不到它的含义。它是否在两个变量之间建立联系?此外,ADOLC_threadNumber尚未在...之前声明。
答案 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