C 中先於main執行

2021-07-11 05:19:56 字數 1697 閱讀 3193

在c++中實現先於main執行:

#include "stdafx.h"

#include #include #include #include #include using namespace std;

typedef struct _info

bool operator ==( const _info& info2)

}info;

void add2(int& x, int& y)

{ //cout<

1 add 1

base here!

this is the main begin!

the add result is 2

mycopyinfo.x = 1

mycopyinfo.y = 2

the result of < is 1

x1 = 2

y1 = 1

press any key to continue . . .

同時引用他人的文章:

以前在提供給客戶的介面庫中如果是dll,則dll中的互斥鎖很容易在dllmain中初始化,

但是對於lib靜態庫則沒有想到更好的處理辦法。現在才發現原來可以在lib中也可以簡單直

接的在main函式外初始化。大家有這方面更深一步的研究,希望能共享一下,多謝!

1、vs2010下,編譯為可執行程式(注意執行順序):

2、編譯為靜態庫被呼叫(注意執行順序):

3、編譯為動態庫被呼叫(注意執行順序):

相關現象1:直接在專案-》屬性-》鏈結器-》高階-》入口點中定義為main,程式編譯過程中警告,

執行後,add函式並沒有先於main函式執行

入口點改為add,仍然會有警告:

執行後a+b值為隨機

由此可以看出  此時vs入口點「並不是」或者「並不能說」是 main 或者add。

使用od更進一步的跟蹤:在1情況下,在_tmaincrtstartup函式中會在進行堆變數初始化時直接呼叫add函式,在呼叫add函式後才會再進行main函式呼叫。

結構體重載:

#include "stdafx.h"

#include using namespace std;

template void displayvalue(t value)

{ cout<

c 中main 函式執行完後還能執行其它語句嗎?

此問題來自 c和c 程式設計師面試秘笈 p15 方法 用atexit 函式來註冊 程式正常終止時要被呼叫的函式 用法 用 法 int atexit void func void 其引數是乙個指標函式,指向乙個沒有引數也沒有返回值的函式 例子 include include atexit包含在此 vo...

main之前執行

分類 c 2013 01 25 14 56 1480人閱讀收藏 舉報 一 main結束 不代表整個程序結束 1 全域性物件的建構函式會在main 函式之前執行,全域性物件的析構函式會在main函式之後執行 用atexit註冊的函式也會在main之後執行。2 一些全域性變數 物件和靜態變數 物件的空間...

C 中的Main方法

c main方法是 c 控制台應用程式或視窗應用程式的入口點。應用程式啟動時,c main 方法是第乙個呼叫的方法。c 中的main 方法首字母必須大寫,如果首字母小寫就會產生編譯錯誤,編譯失敗。c main方法有以下幾條準則 main 方法在c 裡非常特殊,它是編譯器規定的所有可執行程式的入口點。...