c/c++ 入口函数
2012-10-16 11:32
99 查看
之所以大多数程序的“入口”是 main,是因为连接器缺省会连接一个叫 crt0.o 或者 crt0.lib 之类的库,这个库才是一个程序真正的入口,这个真正的入口作了一段初始化之后将控制权交给 main。大多数情况下用户程序不会自己初始化这些东西,所以缺省连接这个库。
如果你自己完成这部分初始化,完全可以抛弃 main。
main 不是程序的入口,只不过是一个普通的符号而已。
以前有个帖子是关于如何让valgrind支持线程
隐约记得里头用到了一个gcc特有的宏
该宏可以使一个函数在main之前就执行
#include <stdio.h>
#include <string.h>
void foo() __attribute__ ((constructor));
int main()
{
return 0;
}
void foo()
{
printf("Hello from %s\n", __FUNCTION__);
}
C++修改入口函数名Main的方法
方法1
// 通过下面这句话将入口函数改成fn.
#pragma comment(linker, "/entry:fn")
#include <iostream>
int fn(void)
{
std::cout << "Hello world!" << std::endl;
return 0;
}
方法2:
项目"属性页"-->"配置属性"-->"链接器"-->"高级"-->"入口点"
加入你想要的入口函数名.
如果你自己完成这部分初始化,完全可以抛弃 main。
main 不是程序的入口,只不过是一个普通的符号而已。
以前有个帖子是关于如何让valgrind支持线程
隐约记得里头用到了一个gcc特有的宏
该宏可以使一个函数在main之前就执行
#include <stdio.h>
#include <string.h>
void foo() __attribute__ ((constructor));
int main()
{
return 0;
}
void foo()
{
printf("Hello from %s\n", __FUNCTION__);
}
C++修改入口函数名Main的方法
方法1
// 通过下面这句话将入口函数改成fn.
#pragma comment(linker, "/entry:fn")
#include <iostream>
int fn(void)
{
std::cout << "Hello world!" << std::endl;
return 0;
}
方法2:
项目"属性页"-->"配置属性"-->"链接器"-->"高级"-->"入口点"
加入你想要的入口函数名.
相关文章推荐
- 《Windows Via C/C++》读书笔记之dll入口函数
- main是C/C++的入口函数么?
- 程序入口函数和glibc及C++全局构造和析构
- C++ 类非静态成员函数作为线程入口函数实现
- C++虚函数:虚指针、虚表、虚函数入口地址
- C++修改入口函数名Main的方法
- windows C/C++自定义函数入口
- c++ 函数入口地址问题
- C++ 程序启动入口函数main还是winmain?
- C++ VS C#(6):入口函数,改变形参数值
- C#调用C++dll文件 运行提示找不到函数的入口点
- C++的入口函数
- C++ VS C#(6):入口函数,改变形参数值
- 程序入口函数和glibc及C++全局构造和析构
- C++反汇编之“认识启动函数,找到用户入口”
- C/C++程序入口函数的隐藏方法
- 程序入口函数和glibc及C++全局构造和析构
- C#调用C(C++)dll示例教程,包含dll找不到函数入口的解决办法,包含C#dll调用方式不对出错的解决办法
- C#调用C++函数入口点的问题 z
- c c++ 函数入口和出口的hook(gcc 编译选项),然后打印出函数调用关系的方法