Отказ от ответственности: я не программист 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.