要求修改一下程序,写代码使整个程序运行后输出“hello world”不允许修改main函数,在强调一下不能修改main函数。
原文给的是使用linker来修改链接设置:#pragma comment(linker, "/entry:print");
呃,这不是vc才支持的预处理指令吗?
我用g++ 还不用修改代码就可以呢。
编译:g++ test.cpp -o test -e__Z5printv
感觉这个答案和我这种都不是很靠谱,还依赖编译器。
所以想了想还可以这样:
```
#include <iostream>
int print(){
printf("hello\n");
return 0;
}
class test
{
public:
test(){
printf("test\n");
print();
};
~test(){
}
};
test t;
int main(int argc, char* argv[])
{
return 0;
}
```
利用类的构造函数.相似的还可以使用
```
//gcc
void __attribute__((constructor)) init_function(void)
{
printf("init\n");
}
```
```
//调用函数赋值给全局变量
int a = print();
```
```
//其实我最先想到的是宏替换。。。
#include <iostream>
#define print main
int print(){
printf("hello\n");
return 0;
}
#define main test
int main(int argc, char* argv[])
{
return 0;
}
```