Можете ли вы пожалуйста объяснить этот кусок кода? [закрыто]

#include <stdio.h>
#include CONST15
#define CONST2 CONST2*CONST1
#define CONST3 CONST2+CONST2
int main(int argc,char**argv)
{
printf("%\n",CONST3);
}
1
задан Brian Tompsett - 汤莱恩 17 June 2016 в 11:38
поделиться

1 ответ

Во-первых, предварительная обработка, которая представляет собой шаг, на котором расширяются # определенных символов, происходит перед фактической компиляцией.

Тогда я не думаю, что такой символ может быть рекурсивным, но его можно заменить. Так что, если это полная программа, и если предположить, что не определяет CONST15 или CONST2, вы не получите никаких разумных результатов. Мой компилятор выдает ошибку в строке #include, в которой не указано, что включить.

Однако вы можете скомпилировать его, определяя некоторые символы во время компиляции, например:

gcc -DCONST15='"math.h"' -DCONST1=3 -DCONST2=5 foo.c

Это даст #include что-то (безвредное) для работы и предоставит значение для CONST1 и CONST2.

Тогда первое определение установит CONST2 в 3 * 5 (именно так, а не 15), а затем второе определение установит CONST3 в 3 * 5 + 3 * 5.

2
ответ дан 2 September 2019 в 22:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: