gpt4 book ai didi

c - 预处理器宏翻译

转载 作者:太空宇宙 更新时间:2023-11-04 05:32:56 25 4
gpt4 key购买 nike

在.NET Core CLR源码中,我发现了如下的宏定义:

#define CORECLR_HOSTING_API(function, ...) \
extern "C" int function(__VA_ARGS__); \
typedef int (*function##_ptr)(__VA_ARGS__)

CORECLR_HOSTING_API(coreclr_shutdown,
void* hostHandle,
unsigned int domainId);

评论里说this定义了一个函数原型(prototype)和一个函数指针。有没有人能够“翻译”这个非宏观版本的样子?也就是说,如果它没有包含在宏中,它会是什么样子? “*function##_ptr”部分让我感到困惑......

最佳答案

## 运算符是连接,在这里使用是因为 function_ptr 是一个有效的标识符,所以预处理器不知道要替换 function 一部分。那么预处理的结果是:

extern "C" int coreclr_shutdown(void* hostHandle, unsigned int domainId);
typedef int (*coreclr_shutdown_ptr)(void* hostHandle, unsigned int domainId);

(为了便于阅读,我对空白进行了模数更改)

关于c - 预处理器宏翻译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54137934/

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