聲明:我不是C程序員。使用預處理器將代碼轉換爲字符串
我最近看到一個朋友的項目。由於我不明白的原因,他將代碼寫入運行時編譯的字符串中。這導致類似:
char x[] = "int y = 5; printf(\"%i\", y)";
run_this_code(x);
這是可怕的使用,因爲Visual Studio不會在步驟做語法高亮等
使用一些預處理器濫用,這是可以做到的伎倆Visual Studio的成認爲你正在編寫真正的代碼,然後在編譯器掌握源代碼之前讓預處理器將它變成一個字符串。這工作:
#define STRINGIFY(x) #x
int main(void){
char[] y = STRINGIFY(
int x = 5;
printf("%i", x);
);
printf("%s", y);
}
的問題,這是它打印出:
int x = 5; printf("%i\n", x);
的問題則是運行時編譯器說,第1行的錯誤是沒有使它包括新行的一種方式?
更新這不是我的問題。這是別人的代碼,我只是對使用預處理器讓他的生活更輕鬆的想法感興趣。我不知道他爲什麼這樣做。
更新刪除所有提到的CUDA,因爲這個問題是關於預處理器,而不是CUDA。
不工作? char x [] =「int x = 5; \ n printf(\」%i \「,x)」; – fazo 2010-11-26 10:25:55
我想要做的事情的目標是將VS欺騙成語法突出顯示,「intellisensing」等編寫在字符串中的代碼。 – 2010-11-26 11:08:57