我想讀取C#中的常量,這些常量在C++的.h文件中定義。任何人都可以告訴我如何在C#中執行此操作?在C++的.h文件看起來像:如何從C#中的.h文件讀取常量
#define MYSTRING1 "6.9.24 (32 bit)"
#define MYSTRING2 "6.8.24 (32 bit)"
我想在C#閱讀本?
我想讀取C#中的常量,這些常量在C++的.h文件中定義。任何人都可以告訴我如何在C#中執行此操作?在C++的.h文件看起來像:如何從C#中的.h文件讀取常量
#define MYSTRING1 "6.9.24 (32 bit)"
#define MYSTRING2 "6.8.24 (32 bit)"
我想在C#閱讀本?
下面是一個非常簡單的答案,您可以在.h文件的每一行上使用它來提取字符串值。
string GetConstVal(string line)
{
string[] lineParts = string.Split(line, ' ');
if (lineParts[0] == "#define")
{
return lineParts[2];
}
return null;
}
所以任何時候它返回null,你沒有一個常量。現在請記住,它只是獲取常數的值,而不是名稱,但是您可以輕鬆修改代碼以通過輸出參數等返回該代碼。
如果要表示其他數據類型,像整數等等,你將不得不考慮巧妙的事情,因爲C++中的宏並不真正算作類型安全。
我讀了可以隨時更改的常量,意思是有名字等等......我只想得到一些特定的常量......在您提出的解決方案中,如果常量名稱發生了變化,那麼如何才能得到它? –
列出的代碼根本不考慮名稱。另外,如果你正在尋找一個特定的常量,並且它的名字發生了變化,那麼你不能做任何事情。無論人類改變常數的名稱也必須改變他們正在尋找的東西。 –
你有兩個選擇:
1 - 創建一個C++包裝代碼,它封裝這些宏,出口這個代碼到一個lib或DLL和C#中使用它。
2-從代碼中讀取/解析.h文件,並在運行時獲取這些值。
請告訴我這個Wrapper類的目的是什麼,我如何使用它和它的功能?我對這個解決方案感興趣。 –
@AsadIqbal - 你不需要知道做第一個選項做第二個選擇。 –
您需要在StreamReader中打開文件並讀取每一行。 –
可能的重複:http://stackoverflow.com/questions/100854/reuse-define-statement-from-h-file-in-c-code – Nahum
不,我不想逐行讀取它。我想獲得在我的C#變量中定義在.h文件中的所有常量。 –