有没有办法通过链接它的 .o 文件来调用一个函数?
例如:
foo.cpp:
extern int x;
void f() { x = 42; }
struct T { T() { f(); } } t; // we use constructor of global
// object to call f during initialization
bar.cpp:
#include <iostream>
int x;
int main()
{
std::cout << x;
}
编译/链接/运行:
$ g++ -c foo.cpp
$ g++ -c bar.cpp
$ g++ foo.o bar.o
$ ./a.out
42
这似乎适用于 gcc 4.7。它按预期输出 42。但是我记得在一些旧的编译器上我对这种模式有一个问题,因为没有真正“使用” foo.o 它在链接时被优化。(也许这个特定的例子由于某种原因不能代表问题)
C++11 标准对这种模式有什么看法?能保证工作吗?