我试图发现某些库链接的含义,并在标题中找到了它:
#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预处理器中,##
是 token 串联运算符。因此,lcname##_
可以理解为“通过将_
放在lcname
的末尾来创建新 token ”。
我假设引用的预处理程序代码正在定义一个预处理程序宏LAPACK_GLOBAL
,该宏应按如下方式使用:
#define LAPACK_something LAPACK_GLOBAL(something, SOMETHING)
之后,对
LAPACK_something
的任何使用将被以下之一替换:something
something_
SOMETHING
取决于环境。
关于c++ - 头文件的解释,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17752620/