我对于inline函数的理解是:它基本上是用来取代C中带参数的宏.
比如对于函数:
inline f(int a){return sizeof(a);}
调用f(5);/*只考虑实参为常量表达式的情况*/
在编译的时候将被展开为 sizeof(5)进而被编译器算出
结果是4
也就是说f(5)可以认为是一个常量表达式//对不对?我觉得是
可是对于:
int main(){
enum{ A=f(5) };
}
为什么编译报错?//VC6和VS2005下都报错?
说f(5)的地方需要一个常量表达式.
这是怎么回是?编译器的问题吗?