2016-03-01 25 views
0

我有一個C++程序。在這個程序的開始,我已經定義了一些這樣的參數,並且在我的代碼中使用了這些參數,我們稱之爲:「first.cpp」;當我們在其他程序中調用該程序時,更改程序中常量參數的值

#define column 6 //number of columns in the mat1 
#define row 5  //number of rows in the mat1 
int main(){ 
... 
} 

現在我想在另一個名爲「second.cpp」的程序中執行這個「first.cpp」程序。 是否有人知道如何在second.cpp中調用first.cpp,以及在第二個cpp中如何初始化這兩個參數(第&列)?實際上,我想在另一個程序(second.cpp)中運行一個C++程序(first.cpp)幾次,並且每次我想要更改(列&行)的值時,該如何實現? ... 其實,我有:

#define column 6  
#define row 5 
int func1(int a[][column],int b[][row]); 
int main(){ 
... 
} 

正如你看到的,我定義一個二維數組作爲func1的參數,並根據到C規則是必要的,我使用某一值時,第二個維度。這就是爲什麼我在main()之前定義這些參數的原因...並且由於某些限制,我不喜歡用指針定義2d數組...這就是原因...

+0

您可以編寫要調用的程序,以便它可以接收行和列的命令行參數,然後將這兩個參數分配給行和列的兩個變量。 – NickLamp

+0

您可以訪問此網站:http://www.dreamincode.net/forums/topic/167249-how-do-i-call-in-one-c-file-into-another/ –

+0

如何編寫我的參數作爲主要參數,而我在主要之前定義它們!!並且由於某些原因,我必須在主要使用它們之前 – shirin

回答

2

它怎麼可能有可能嗎?

只要你堅持你的#define預處理器常量,這是不可能的。編譯完成後,這些固定到您的first.cpp中。

您可以改爲做什麼(如@NickLampcomment中所述):提供這些常量作爲命令行參數。

如果沒有給出命令行參數,您可以考慮將它們設置爲默認值。

1

您可以將first.cpp放入一個庫(靜態庫是一個很好的選擇),並從您的second.cpp程序中調用它,並且您不應該使用"int func1(int a[][column],int b[][row]);"簽名,而應該使用"int func1(int a[][],int b[][], column, row)",並刪除「 #定義「S。剩下的工作就是實現這個功能。

相關問題