Re: [問題] VC中 程式區段變數初始化問題
※ 引述《orc1424 (小狗撒尿1424)》之銘言:
: 在VC裡面 我寫了一個.dll
: 假設我想要把某一段程式(當然這邊單指變數)
: 放在可供其他程式(其他藉由dll來存取)讀取的區段
: (就是dll之間的share)
: 我必須這樣寫(裡面有個簡單的結構POINT)
: 但是如果我不經過初始化
: 他不會認同我把這個變數放在mySection Section
: 他會說他找不到mySection Section
那是因為你用錯 section 了
data section 本來就是要放有初始化的變數
如果你想一開始宣告變數,但是不用直接初始化的話
應該使用 bss section,再把變數放在裡面
請查 #pragma bss_seg
: //****** 程式碼開始
: #pragma data_seg ("mySection")
: POINT pq = { 0, 0 };
: #pragma data_seg ()
: #pragma comment(linker, "/SECTION:mySection,RWS")
: //****** 程式碼結束
: 問題:
: 今天還好是一個簡單的POINT我可以這樣初始化
: 如果今天是很複雜的結構咧?
: 或是一個超級複雜的class
如果用 C 來寫的話
不想宣告就使用 POINT pq = {0,0} 來定義 struct 內容
大概就得先把 struct 變數,例如宣告一個 POINT pq; 在 bss_seg 之中
然後自己寫個用來設定其各資料成員值的函式
在程式開始後,再自行呼叫那個初始用的函式
如果用 C++
那 struct 和 class 都可以透過 constructor 來處理初始化的工作
就可以放在 data_seg 了
以下程式片段給你參考一下 (測試過可編譯)
class c {
public:
c(int x,int y) : _x(x),_y(y) {}
private:
int _x,_y;
};
#pragma data_seg("123")
c c0(1,2);
#pragma data_seg()
: 我還是必須用原來的方法嗎?
: 還是有更好的解決辦法呢?
: 所有錯誤我都會虛心接受指正 謝謝各位的指教
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.129.20.3
※ 編輯: UNARYvvv 來自: 140.129.20.3 (12/20 13:12)
推
12/20 17:43, , 1F
12/20 17:43, 1F
→
12/20 17:43, , 2F
12/20 17:43, 2F
推
12/20 20:12, , 3F
12/20 20:12, 3F
推
12/20 22:09, , 4F
12/20 22:09, 4F
推
12/21 18:42, , 5F
12/21 18:42, 5F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章