gpt4 book ai didi

c++ - 当只有两部分时#define 是什么意思?

转载 作者:太空狗 更新时间:2023-10-29 19:38:11 25 4
gpt4 key购买 nike

我知道以下 3 个部分#define:

#define PI 3.4

这意味着它将用 3.4 替换 PI

但这就是 2 部分 #define 的含义,如下所示:

#define something

它会用 null/空字符串替换 something 吗?

下面是代码示例,我搜索了文件,只列出了相关行

  D:\mariadb\storage\pbxt\src\cache_xt.cc (23 hits)  
Line 172: #ifdef xtPublic
Line 173: #undef xtPublic
Line 188: #define xtPublic
Line 325: xtPublic XTIndHandlePtr xt_ind_get_handle(..)
Line 378: xtPublic void xt_ind_release_handle(XTIndHandlePtr..)
Line 516: xtPublic xtBool xt_ind_copy_on_write(XTIndReferencePtr iref)
Line 597: xtPublic void xt_ind_lock_handle(XTIndHandlePtr handle)

最佳答案

是的,这意味着用空字符串替换 something。但现在重要的是 something 被预处理器识别为“已定义”,所以

#ifdef something

将在 #define(第 172 行)之后通过。

此外,它通常用于配置或特定于供应商的属性(第 325 行,...),例如

#if MSVC
#define EXPORT __declspec(dllexport)
#else
#define EXPORT
#endif

EXPORT void f();
// expand to '__declspec(dllexport) void f()' in MSVC
// expand to 'void f()' in other compilers

关于c++ - 当只有两部分时#define 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6121758/

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