前端之家收集整理的这篇文章主要介绍了
在C中声明使用前,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想知道为什么C的声明使用前规则不在一个类内.
看这个例子:
#ifdef BASE
struct Base {
#endif
struct B;
struct A {
B *b;
A(){ b->foo(); }
};
struct B {
void foo() {}
};
#ifdef BASE
};
#endif
int main( ) { return 0; }
如果BASE被定义,代码是有效的.
在A的构造函数中,我可以使用尚未声明的B :: foo.
为什么这个工作,大部分是为什么只在课堂里工作?
这是因为,只有在整个类定义已经被编译器解析之后,即使在
函数定义是内联的时候,成员
函数也是被编译的,而正常的
函数在被读取之后被立即编译. C标准需要这种行为.
原文链接:https://www.f2er.com/c/115116.html