国产探花免费观看_亚洲丰满少妇自慰呻吟_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語言,那可以繼續關注武林技術頻道,武林小編會每日進行更新。

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

圖片精選

主站蜘蛛池模板: 渝北区| 兴和县| 濮阳县| 湘潭市| 涞源县| 台州市| 香河县| 咸宁市| 靖边县| 黄大仙区| 徐闻县| 留坝县| 清河县| 荃湾区| 华宁县| 长岭县| 太保市| 象州县| 汤原县| 依兰县| 屯昌县| 荆门市| 陵川县| 高陵县| 屏东县| 利辛县| 云浮市| 台中县| 丽水市| 定襄县| 密山市| 运城市| 五寨县| 延川县| 灌云县| 汉阴县| 乌兰浩特市| 泗洪县| 秭归县| 通渭县| 徐闻县|