C语言中怎么在main函数开始前执行函数

 更新时间:2013年10月09日 09:27:46   作者:  
C语言中怎么在main函数开始前执行函数呢?下面小编就大家详细的介绍一下。需要的朋友可以过来参考下,希望对大家有所帮助

在gcc中,可以使用attribute关键字,声明constructor和destructor,代码如下:

复制代码 代码如下:

#include <stdio.h>

__attribute((constructor)) void before_main()
{
 printf("%s/n",__FUNCTION__);
}

__attribute((destructor)) void after_main()
{
 printf("%s/n",__FUNCTION__);
}

int main( int argc, char ** argv )
{
 printf("%s/n",__FUNCTION__);
 return 0;
}


 vc不支持attribute关键字,在vc中,可以使用如下方法:
复制代码 代码如下:

#include <stdio.h>

int
main( int argc, char ** argv )
{
        printf("%s/n",__FUNCTION__);

        return 0;
}


int before_main()
{
        printf("%s/n",__FUNCTION__);

        return 0;
}

int after_main()
{
        printf("%s/n",__FUNCTION__);

        return 0;
}

typedef int func();

#pragma data_seg(".CRT$XIU")
static func * before[] = { before_main };

#pragma data_seg(".CRT$XPU")
static func * after[] = { after_main };

#pragma data_seg()


编译执行,上述两段代码的结果均为:

before_main

main

after_main

可以在main前后调用多个函数,在gcc下使用attribute声明多个constructor、destructor,vc下在before、after数组中添加多个函数指针。

相关文章

  • C语言枚举与联合体深入详解

    C语言枚举与联合体深入详解

    枚举顾名思义就是把所有的可能性列举出来,像一个星期分为七天我们就可以使用枚举,联合体是由关键字union和标签定义的,和枚举是一样的定义方式,不一样的是,一个联合体只有一块内存空间,什么意思呢,就相当于只开辟最大的变量的内存,其他的变量都在那个变量占据空间
    2022-09-09
  • 利用Qt+opencv实现视频分解为图片

    利用Qt+opencv实现视频分解为图片

    这篇文章主要为大家详细介绍了如何利用Qt和opencv实现视频分解为图片,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-12-12
  • C++浅析虚函数使用方法

    C++浅析虚函数使用方法

    对C++了解的人都应该知道虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来实现的。简称为V-Table。本文就将详细讲讲虚函数表的原理与使用,需要的可以参考一下
    2022-08-08
  • C++11实现简易定时器的示例代码

    C++11实现简易定时器的示例代码

    这篇文章主要介绍了C++11实现简易定时器的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • C语言详细讲解常用字符串处理函数

    C语言详细讲解常用字符串处理函数

    在日常编程中,对于字符串的操作中我们都很习惯的使用一些C库中自带的函数,并且关于字符串的操作函数基本都在 string.h 这个头文件中。关于C库字符串常用处理函数也是平时面试或者考试过程中非常喜欢考的,本文将带大家手动来实现这些常用函数
    2022-05-05
  • C++中vector可以作为map的键值实例代码

    C++中vector可以作为map的键值实例代码

    这篇文章主要介绍了C++中vector可以作为map的键值实例代码,需要的朋友可以参考下
    2017-07-07
  • 用C语言实现贪吃蛇小游戏

    用C语言实现贪吃蛇小游戏

    这篇文章主要为大家详细介绍了用C语言实现贪吃蛇小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-05-05
  • OpenCV实现马赛克和毛玻璃滤镜特效

    OpenCV实现马赛克和毛玻璃滤镜特效

    这篇文章主要为大家详细介绍了OpenCV实现马赛克和毛玻璃滤镜特效,具有一定的参考价值,感兴趣的小伙伴们可以参考一下方法
    2019-05-05
  • 详解C语言之文件操作(上)

    详解C语言之文件操作(上)

    这篇文章主要介绍了关于C语言文件操作方法的相关资料,小编觉得这篇文章写的还不错,需要的朋友可以参考下,希望能够给你带来帮助
    2021-11-11
  • 用C语言程序判断大小端模式

    用C语言程序判断大小端模式

    本文介绍了用C语言程序判断大小端的方法,与大家分享一下。
    2013-04-04

最新评论