Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 头文件的解释_C++_C_Lapack_Lapacke - Fatal编程技术网

C++ 头文件的解释

C++ 头文件的解释,c++,c,lapack,lapacke,C++,C,Lapack,Lapacke,我试图发现一些库链接的含义,并在标题中找到: #ifndef LAPACK_GLOBAL #if defined(LAPACK_GLOBAL_PATTERN_LC) || defined(ADD_) #define LAPACK_GLOBAL(lcname,UCNAME) lcname##_ #elif defined(LAPACK_GLOBAL_PATTERN_UC) || defined(UPPER) #define LAPACK_GLOBAL(lcname,UCNAME) UCNAME

我试图发现一些库链接的含义,并在标题中找到:

#ifndef LAPACK_GLOBAL
#if defined(LAPACK_GLOBAL_PATTERN_LC) || defined(ADD_)
#define LAPACK_GLOBAL(lcname,UCNAME)  lcname##_
#elif defined(LAPACK_GLOBAL_PATTERN_UC) || defined(UPPER)
#define LAPACK_GLOBAL(lcname,UCNAME)  UCNAME
#elif defined(LAPACK_GLOBAL_PATTERN_MC) || defined(NOCHANGE)
#define LAPACK_GLOBAL(lcname,UCNAME)  lcname
#else
#define LAPACK_GLOBAL(lcname,UCNAME)  lcname##_
#endif
#endif
我不明白它们是做什么的,特别是当它返回带后缀的
##(


谢谢

在C预处理器中,
##
是令牌连接操作符。因此,
lcname##
可以理解为“通过将
\u
放在
lcname
的末尾来创建一个新令牌”

我假设引用的预处理器代码定义了一个预处理器宏
LAPACK\u GLOBAL
,其用途如下:

#define LAPACK_something LAPACK_GLOBAL(something, SOMETHING)
在此之后,
LAPACK\u something
的任何使用都将被以下内容之一所取代:

something
something_
SOMETHING

取决于环境。

如果您针对每个您感到困惑的编译器指令单独拆分此问题,您可能会得到更多的回答。您可能不会得到解释上述代码中每个编译器指令的响应。