如果我这样做:
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/