一直没法提交,那我分段提交
再多举几个例子
假设你有 a.cpp 和 b.cpp 两个文件
a.cpp 中定义了 void foo( void ) { putchar('a'); }
b.cpp 中也定义 void foo( void ) { putchar('b'); }; int main( void ) { foo(); }
编译a.cpp得到a.obj,编译b.cpp得到b.obj,链接a.obj+b.obj失败
因为link时,foo() 这个调用找到了多份,它不知道你想调用哪个。(强链接/弱连接等gcc特有的特性不谈)
假设你有 a.cpp 和 b.cpp 两个文件
a.cpp 中定义了 static void foo( void ) { putchar('a'); }; void bar( void ) { foo(); }
b.cpp 中也定义 static void foo( void ) { putchar('b'); }; int main( void ) { foo(); }
编译a.cpp得到a.obj,编译b.cpp得到b.obj,链接a.obj+b.obj得到h.exe,一切都可很完美。
因为a.obj只知道自己有个foo定义,同样b.obj也只知道自己有个foo定义。