关于结构体内定义的函数

学术版

@[hxhhxh](/user/429147) 因为在结构体之外,编译器 __依次__ 编译所有函数,而你在a中调用了b,而此时b尚未被处理到,所以CE
by albertting @ 2024-04-26 17:10:45


@[hxhhxh](/user/429147) 因为编译器在编译结构体时,会先建立结构体的成员树,也就是先统计成员函数名,然后再把定义绑定在一起。 求关。
by xk2013 @ 2024-04-26 17:11:00


@[hxhhxh](/user/429147) 所以你的结论是错误的
by xk2013 @ 2024-04-26 17:11:34


楼上正解
by albertting @ 2024-04-26 17:13:44


@[xk2013](/user/998662) thx
by hxhhxh @ 2024-04-26 18:14:02


@[hxhhxh](/user/429147) thanks,最近想涨粉
by xk2013 @ 2024-04-26 18:15:46


(我不知道 xk2013 的说法是哪里来的。我在 CppRef 上查了会儿没查到,就决定不浪费时间了。我只能认为他说的可能有一定道理,或者说有这个可能性,但是语言标准不一定是按照他的说法说的。比如可能会说类内的函数默认都先依次声明再处理它们的具体定义之类的。(你要知道有这种语法 ```cpp void b(); // 先声明函数 b void a(){ b(); } void b(){ } ``` 即使在函数外也可以生效。)按我理解,不必纠结这个问题,一般来讲,你总是可以找到一种不 CE 的方法,并且有理由相信评测系统的编译器和本地编译器的行为一致。)
by 小粉兔 @ 2024-04-27 00:14:30


@[hxhhxh](/user/429147)
by 小粉兔 @ 2024-04-27 00:14:55


|