#include<iostream.h>
class man
{
public:
void money()
{
for(int i=0;i<5;i++)
cout<<i;
}
};
void main()
{
man m;
m.money();
}
编译时,警告显示为“包含for的函数未内联展开”。为什么会这样?
答案 0 :(得分:2)
在默认情况下被视为具有inline
函数说明符的类中定义的函数,即使您没有明确指定它也是如此。但是,并非所有函数都可以由编译器内联。编译器会告诉你这个。
考虑到如果使用现代编译器,它将无法编译代码。标识符cout
将是未声明的,因为您没有指定其名称空间,主函数应具有返回类型int
。
另外,我会使用money
限定符声明函数const
:
void money() const;
答案 1 :(得分:0)
TurboC ++是一个非常古老的编译器,与标准化的C ++相比,今天的标准非常缺乏。当您在类的定义中包含成员函数的定义时,该函数是隐式内联的。您收到警告是因为TurboC ++无法内联包含某些语言结构的函数。在这种情况下,它是编译器无法内联的for
循环。最近常用的编译器如GCC和MSVC不是这种情况,因为它们能够内联函数。
虽然我通常不建议忽略工具链生成的警告,但我认为在这种情况下完全合理。忽略它并继续前进。