LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2183|回复: 12

用 gcc 怎么样定义一个函数先于 main 函数运行?

[复制链接]
发表于 2006-1-5 13:31:12 | 显示全部楼层 |阅读模式
在 borland c 中,有一个功能,就是在纯C语言的程序中,可以定义一个函数先于 main 函数运行,以执行一些特殊的初始化。现在需要把这样的程序移植到 Linux 中,怎么样实面这样的功能呢?
发表于 2006-1-5 13:45:32 | 显示全部楼层
把这个函数放到main的第一句不就得了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-1-5 14:52:38 | 显示全部楼层
找到方法了,Here:
http://gcc.gnu.org/onlinedocs/gc ... Function-Attributes

定义函数属性。示例如下:

#include <stdio.h>


void ini(void) __attribute__ ((constructor));

void ini(void) {

  printf("before main:%d\n", 1024);
  exit(1);
}

int main(void) {

  puts("here is in main");
  return 0;
}
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-1-5 14:53:36 | 显示全部楼层
gcc  是很伟大的,只要你去研究。
回复 支持 反对

使用道具 举报

发表于 2006-1-6 12:21:18 | 显示全部楼层
void ini(void) 不能用exit(1),否则它不会执行main。
回复 支持 反对

使用道具 举报

发表于 2006-1-17 19:58:12 | 显示全部楼层
开了一下眼界
回复 支持 反对

使用道具 举报

发表于 2006-1-18 09:52:27 | 显示全部楼层
我倒是想知道先于main执行的原因和应用。
回复 支持 反对

使用道具 举报

发表于 2006-1-18 10:44:58 | 显示全部楼层
能说一下有什么用处吧
要是单单初使化的话
在main开始的时候也可以啊
更牛的用处 还请指教
回复 支持 反对

使用道具 举报

发表于 2006-1-21 20:45:45 | 显示全部楼层
同意 rubble_stone 的,见
http://www.xfocus.net/articles/200109/260.html
中的”扩展的GCC特性“
回复 支持 反对

使用道具 举报

发表于 2006-1-21 21:04:57 | 显示全部楼层
对呀,往那而用乐
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表