gpt4 book ai didi

以下 C 宏会导致问题吗?

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

我想创建两个宏。其中一个将扩展到函数原型(prototype)和函数内容,另一个将扩展到仅函数原型(prototype)。我正在考虑创建以下内容:

#ifdef SOME_CONDITION
#define MY_MACRO(prototype, content) prototype;
#else
#define MY_MACRO(prototype, content) prototype content
#endif

作为示例用法

MY_MACRO(int foo(int a, int b)
,
{
return a + b;
}
)

这些宏似乎工作正常。您认为这些宏是否足够安全,以至于它们可以按预期适用于每种 C 代码?还是您看到任何陷阱?

最佳答案

第一个主要陷阱,它不起作用。当使用第二个宏时,它会创建

int foo(int a, int b), { return a + b; }

这不是一个有效的函数定义。要解决此问题,您必须删除宏定义中的 ,

我看到的第二个陷阱,通常 C 程序员不使用这种花哨的宏。当您习惯于阅读 C 源代码时,这简直令人困惑。

如果您担心原型(prototype)声明和相应函数定义的分歧,我建议使用适当的编译器标志或工具。查看此问题和答案,How to find C functions without a prototype?

关于以下 C 宏会导致问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23242059/

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