c - 函数中的函数

标签 c macros inline

如果我这样做:

void foo() {
    if( .. ) {
      inline int baa(..) { return .. }
    } else {
      inline int baa(..) { return .. }
    }

}

然后在 foo 函数中调用:baa(..) 我得到了 'baa' 的隐式声明。 但是如果我做原型(prototype)声明:inline int baa(int); 错误是inline function 'baa' declared but never defined。我正在使用内联函数来替换宏函数。

如何解决这个问题?

编辑 更好:有人可以解释为什么编译器会声明上述错误消息吗?

最佳答案

I'm using inline function to replace macro-function.

您不能在函数内部定义函数,您只能声明它们。声明它们会使它们的名称在该范围内可见,但这些函数仍然需要在某处进行定义,而且我们知道我们不能在另一个函数中定义它们。这就是为什么编译器说该函数是声明的但从未定义的。

相反,只需在全局范围内声明您的函数内联

关于c - 函数中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11026183/

相关文章:

html - 在换行符周围放置多个内联元素的轮廓?

tags - 替换 Struts2 标签中的部分字符串

谁能告诉我在哪里可以获得维特比解码器的逐步算法?

c - C 预处理器宏中的正则表达式

c++ - 派生类中虚函数调用的优化

C错误检查函数

c++ - 有没有办法通过函数指针调用运算符函数?

c - 中缀到后缀

c - 如何使用函数指针调用函数?

c - 我下面使用指针获取字符串长度的代码有什么问题?