我使用 g++
(7.3.0) 编译了这段 C++ 代码。
struct C {
__attribute__((noinline)) int foo() { return 0; };
};
int bar(C &c) { return c.foo(); }
我使用nm
发现foo
是弱引用,这是由于C++规范还是GCC的决定导致的?
实验流程:
$ g++ test.cpp -c -Og
$ nm test.o
0000000000000000 T _Z3barR1C
0000000000000000 W _ZN1C3fooEv
nm
的输出结果。我发现bar
是弱符号,而不是foo
。 - KamilCuk