免責事項:私は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に関するすべての言及が削除されました。