gpt4 book ai didi

从头文件调用函数

转载 作者:行者123 更新时间:2023-11-30 17:14:07 24 4
gpt4 key购买 nike

我有一个关于 C 中头文件的问题。我需要初始化一个变量,但取决于条件。为了评估该条件,我需要调用一个函数,请参见下面的代码:

我在 header.h 中有以下类似函数的宏,我需要在其中调用 function():

#define func_like_macro()   do{\
if((function()==290))\
{\
macro(x, 0);\
}\
else\
{\
macro(x, 1);\
}\
macro(w, 1);\
macro(z, 1);\

}while(0);

这是正确的吗?

我的意思是这行得通,还是我根本不应该在头文件中的类似函数的宏中包含函数调用?

谢谢,如果这是一个非常愚蠢的问题,我提前道歉!

最佳答案

为什么不直接有一个初始化函数呢?通常,您不会使用很多全局变量,因此这不会有太大问题。对于局部变量,您无论如何都需要它。

对于原来的问题:宏只是文本替换。它在 C 编译器执行之前执行。将其视为编辑器中的高级文本替换,因此无论您在何处使用该宏,宏中的函数调用都将被插入。

一般来说,应避免使用类似函数的宏。内联函数通常是更好的方法。 Here不仅对于海湾合作委员会来说是一个很好的理由。

请注意,如果您希望在编译时以这种方式初始化变量,那么无论如何都行不通。正如我已经在对您的问题的评论中挑剔的那样,该函数实际上是在运行时调用的,而不是在编译时调用的。因此这个宏没有帮助。更糟糕的是:这甚至无法编译,因为编译器不知道何时调用该函数。请注意,C 没有像 c++ 和其他 OOPL 那样的构造函数/析构函数。

关于从头文件调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30462332/

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