3.cc
来自「GNU binutils是GNU交叉工具链中的一个源码包」· CC 代码 · 共 47 行
CC
47 行
struct A{ virtual void foo(); virtual void bar();};void A::foo() { } // keepvoid A::bar() { } // losestruct B : public A{ virtual void foo();};void B::foo() { } // keepvoid _start() __asm__("_start"); // keepvoid start() __asm__("start"); // some toolchains use this name.A a; // keepB b;A *getme() { return &a; } // keepvoid _start(){ getme()->foo();#ifdef __GNUC__#if (__GNUC__ == 2 && __GNUC_MINOR__ < 96)// gcc-2.95.2 gets this test wrong, and loses B::foo().// Cheat. After all, we aren't trying to test the compiler here. b.foo();#endif#endif}void start (){ _start ();}// In addition, keep A's virtual table.// We'll wind up keeping `b' and thus B's virtual table because// `a' and `b' are both referenced from the constructor function.extern "C" void __main() { }
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?