头文件的解释



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

#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##_可以读作"通过将_放在lcname的末尾来创建新的令牌"。

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

#define LAPACK_something LAPACK_GLOBAL(something, SOMETHING)

之后,LAPACK_something的任何使用都将被以下之一所取代:

something
something_
SOMETHING

取决于环境。

相关内容

  • 没有找到相关文章

最新更新