国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C > 正文

C語言中如何在main函數開始前執行函數

2020-02-24 14:11:00
字體:
來源:轉載
供稿:網友

我在學習Python的時候,對于main的判斷有一定的了解。后來,當我學習C語言時,我發現,其實這一切都是互通的,下面就各位講解下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語言中如何在main函數開始前執行函數的所有知識點,如果你想更深入的了解C語言,那可以繼續關注武林技術頻道,武林小編會每日進行更新。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 丰县| 定安县| 濉溪县| 哈密市| 金溪县| 葫芦岛市| 广元市| 随州市| 新民市| 海阳市| 甘肃省| 清镇市| 苗栗市| 正定县| 沧州市| 常熟市| 册亨县| 衢州市| 房山区| 汝州市| 新民市| 大邑县| 桃江县| 桦甸市| 东城区| 嫩江县| 什邡市| 双桥区| 衡南县| 博罗县| 南召县| 兴仁县| 巴林右旗| 闽侯县| 应用必备| 民丰县| 白沙| 白沙| 会东县| 金平| 宝山区|