gpt4 book ai didi

c++ - 头文件的解释

转载 作者:太空宇宙 更新时间:2023-11-04 02:55:43 24 4
gpt4 key购买 nike

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

#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 的末尾来创建一个新 token ”。

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

#define LAPACK_something LAPACK_GLOBAL(something, SOMETHING)

之后,任何对 LAPACK_something 的使用都将被替换为以下之一:

something
something_
SOMETHING

视环境而定。

关于c++ - 头文件的解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17752620/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com