gpt4 book ai didi

c - 在 C 中使用宏生成函数

转载 作者:行者123 更新时间:2023-12-02 06:20:26 26 4
gpt4 key购买 nike

我有以下宏:

‎#define GTR(type) \‎
type type##_gtr(type a, type b) \‎
‎{ \‎
‎ return a > b ? a : b;\‎
‎}‎

我知道它生成函数,但是如果 GTR(unsigned int) 扩展到 main() 之外,我该如何调用生成的函数? _gtr(a, b) 不起作用...

最佳答案

您必须编写 unsigned int_gtr(a,b),这样它就无法使用您创建的宏定义为该类型工作。

原因是预处理器简单地替换了type 参数并将它加入## 之后的文本。

你可以做一些事情,比如为 unisgned int 创建一个 typedef,这样就没有空格,然后使用它,例如:

typedef unsigned int uint;
GTR(uint)
...
uint_gtr(a,b)

关于c - 在 C 中使用宏生成函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11329521/

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