2015-05-14 48 views
0

我需要做的是接受一個字符串,如函數:一個普通的字符串作爲代碼編譯

int *ptr[20], *p, p2, p3[3]; 

和功能需要打印:

PTR需要80個字節。 p需要4個字節。 p2需要4個字節。 p3需要12個字節。

爲了簡化任務,我想使用字符串中的「假」代碼作爲「真實」代碼,然後只打印函數sizeof(變量)來回答問題。我認爲這是最簡單的方法。 但如何做到這一點?

+1

請詳細說明你的代碼和真實代碼是什麼意思? – Saif

+0

和真實的代碼是?順便說一句,你還需要展示一些示例代碼。 – Saif

+0

假代碼是字符串內的代碼。字符串「short * s [2]」是一個假代碼,因爲它不在Visual Studio或環境本身內部,而是在字符串內部。我需要使代碼「真實」,因此它在環境中或使用任何步驟使其成爲「真實」。因此,如果我使用函數sizeof(s),它將返回真正聲明的數組的大小,並且與字符串中的內容相同。 – chen100

回答

1

你描述的是能夠「評估」動態生成的代碼。

有些語言 - 通常是評估(非編譯)的語言 - 具有這樣的特性,但C++沒有。

即使這樣做,這也不是一個好的解決方案。你需要一個解析器。對於正式的方法,您可以研究詞法分析器和上下文無關的分析器。對於一個特別的方法......呃......做任何你想要的字符串操作。