从头文件调用函数

call a function from a header file

我对 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 编译器执行 之前 执行。将其视为编辑器中的高级文本替换,因此无论您在何处使用该宏,都会插入宏中的函数调用。

一般来说,应该避免使用类似函数的宏。 inline 函数通常是更好的方法。 Here 不仅对 gcc 来说是一个很好的理由。

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