define與結構陣列大小一問 |
尚未結案
|
quzo1688
一般會員 發表:2 回覆:8 積分:2 註冊:2008-11-12 發送簡訊給我 |
[code cpp] #include #pragma hdrstop #include "Unit1.h" #define blockwidth Form1->RadioGroup1->Items->Strings[Form1->RadioGroup1->ItemIndex] #define blocklen Form1->RadioGroup1->Items->Strings[Form1->RadioGroup1->ItemIndex] struct arraytype { double sum[blockwidth][blocklen]; double num; }; //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { Label1->Caption=blockwidth; Label2->Caption=blocklen; } [/code] 各位前輩安~ 上面程式碼第5與第6行是預定義的2個變數blockwidth和blocklen 在Form1中使用1個RadioGroup、1個button、2個Label RadioGroup的Itesms內有512與16384 Compiler時卻出現以下訊息... [C Error] Unit1.cpp(9): E2313 Constant expression required 如果那個結構陣列內的陣列大小沒有使用到blockwidth、blocklen這2個變數是可以正常顯示的 不過因為一定要使用到那個結構陣列,所以不知道有什麼方法可以解決現在的問題? 若表達不夠好,請見諒。
------
hello!! |
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
quzo1688
一般會員 發表:2 回覆:8 積分:2 註冊:2008-11-12 發送簡訊給我 |
taishyang前輩你好:
因為教授要求程式在一開始時就可以選擇它的區塊大小(512或16384) 再利用那個大小去配置陣列和供給其他函式使用。 而動態配置在這裡可能不太需要︿︿" ===================引 用 taishyang 文 章=================== 錯誤訊息已經告訴你 double sum[blockwidth][blocklen]; 其中的blockwidth以及blocklen必須是constant 若你的sum維度是不固定的,那必須動態配置記憶體 如何動態配置記憶體,可以搜尋站上的文章
------
hello!! |
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
herbert2
尊榮會員 發表:58 回覆:640 積分:894 註冊:2004-04-16 發送簡訊給我 |
|
quzo1688
一般會員 發表:2 回覆:8 積分:2 註冊:2008-11-12 發送簡訊給我 |
herbert2前輩你好:
我看你所回覆之連結,我還是意會不出來@@" ===================引 用 herbert2 文 章=================== 請參考: http://delphi.ktop.com.tw/board.php?cid=168&fid=1499&tid=95521
------
hello!! |
quzo1688
一般會員 發表:2 回覆:8 積分:2 註冊:2008-11-12 發送簡訊給我 |
taishyang前輩你好:
我還是不太了解你的意思。 前輩你所指的動態配置,我想到的是類似這樣↓ [code cpp] #define blockwidth (int *)malloc(sizeof(int)) #define blocklen (int *)malloc(sizeof(int)) [/code] 不過我想應該不是我這個意思︿︿" 可否請taishyang前輩舉一個例子呢? ===================引 用 taishyang 文 章=================== 這樣的要求就是要用動態配置 因為在編譯的時候並不知道blockwidth和blocklen是多少 並不是你想的那樣 ^_^
------
hello!! |
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
quzo1688
一般會員 發表:2 回覆:8 積分:2 註冊:2008-11-12 發送簡訊給我 |
|
quzo1688
一般會員 發表:2 回覆:8 積分:2 註冊:2008-11-12 發送簡訊給我 |
[code cpp]
#define blockwidth StrToInt(Form1->RadioGroup1->Items->Strings[Form1->RadioGroup1->ItemIndex]) #define blocklen StrToInt(Form1->RadioGroup1->Items->Strings[Form1->RadioGroup1->ItemIndex]) //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { int **a = new int*[blockwidth]; for(int i=0;i a[i] = new int[blocklen]; for(int j=0;j < blocklen;j ) a[i][j]=0; } a[0][0]='1'; Label1->Caption=a[0][0]; //test for (int i=0;i delete[] a; } [/code] 上面code根據板上的資源所改的,現在此種方式ok 不過在更改成結構陣列方式就一推錯誤... 請問各位前輩~要怎麼改成結構陣列的動態配置? 因為其他變數和函式也會用到,所以想改成結構的方式。
------
hello!!
編輯記錄
quzo1688 重新編輯於 2008-11-13 22:51:22, 註解 無‧
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |