Как получить вывод программы на С после препроцессора?

Как правильно задавать вопросы Правильно сформулированный вопрос и его грамотное оформление способствует высокой вероятности получения достаточно содержательного и по существу ответа. Общая рекомендация по составлению тем: 1. Для начала воспользуйтесь поиском форума. 2. Укажите версию ОС вместе с разрядностью. Пример: LM 19.3 x64, LM Sarah x32 3. DE. Если вопрос касается двух, то через запятую. (xfce, KDE, cinnamon, mate) 4. Какое железо. (достаточно вывод inxi -Fxz в спойлере (как пользоваться спойлером смотрим здесь)) или же дать ссылку на hw-probe 5. Суть. Желательно с выводом консоли, логами. 6. Скрин. Просьба указывать 2, 3 и 4 независимо от того, имеет ли это отношение к вопросу или нет. Так же не забываем об общих правилах Как пример вот
no avatar

Автор темы
Restart1566
Сообщения: 218
Зарегистрирован: 04 сен 2016, 14:09
Решено: 1
Откуда: Москва
Благодарил (а): 5 раз
Поблагодарили: 17 раз
Контактная информация:

Как получить вывод программы на С после препроцессора?

#1

18 ноя 2020, 17:09

Всем доброго вечера!

Порылся в man - не нашел.
Подскажите, пожалуйста!

Аватара пользователя

rogoznik
Сообщения: 10015
Зарегистрирован: 27 июн 2017, 13:36
Решено: 128
Откуда: Нижний Тагил
Благодарил (а): 776 раз
Поблагодарили: 1950 раз
Контактная информация:

Как получить вывод программы на С после препроцессора?

#2

18 ноя 2020, 17:12

Restart1566, а давай ты полностью опишешь задачу.
ИзображениеИзображение

Аватара пользователя

WWolf
Сообщения: 3873
Зарегистрирован: 14 фев 2018, 00:51
Решено: 28
Откуда: Краснодар
Благодарил (а): 1682 раза
Поблагодарили: 1206 раз
Контактная информация:

Как получить вывод программы на С после препроцессора?

#3

18 ноя 2020, 19:51

Restart1566 писал(а):
18 ноя 2020, 17:09
Порылся в man - не нашел.
man gcc строка 687, ключ -E оно?

Код: Выделить всё

       If you only want some of the stages of compilation, you can use -x (or filename suffixes) to tell gcc where to start, and
       one of the options -c, -S, or -E to say where gcc is to stop.  Note that some combinations (for example, -x cpp-output
       -E) instruct gcc to do nothing at all.

       -c  Compile or assemble the source files, but do not link.  The linking stage simply is not done.  The ultimate output is
           in the form of an object file for each source file.

           By default, the object file name for a source file is made by replacing the suffix .c, .i, .s, etc., with .o.

           Unrecognized input files, not requiring compilation or assembly, are ignored.

       -S  Stop after the stage of compilation proper; do not assemble.  The output is in the form of an assembler code file for
           each non-assembler input file specified.

           By default, the assembler file name for a source file is made by replacing the suffix .c, .i, etc., with .s.

           Input files that don't require compilation are ignored.

       -E  Stop after the preprocessing stage; do not run the compiler proper.  The output is in the form of preprocessed source
           code, which is sent to the standard output.

           Input files that don't require preprocessing are ignored.

no avatar

Автор темы
Restart1566
Сообщения: 218
Зарегистрирован: 04 сен 2016, 14:09
Решено: 1
Откуда: Москва
Благодарил (а): 5 раз
Поблагодарили: 17 раз
Контактная информация:

Как получить вывод программы на С после препроцессора?

#4

19 ноя 2020, 09:00

WWolf писал(а):
18 ноя 2020, 19:51
man gcc строка 687, ключ -E оно?
Нет. Собственно, мне нужен ИСХОДНЫЙ ТЕКСТ программы после обработки препроцессором. Раскрытые определения и макроопределения.

Аватара пользователя

WWolf
Сообщения: 3873
Зарегистрирован: 14 фев 2018, 00:51
Решено: 28
Откуда: Краснодар
Благодарил (а): 1682 раза
Поблагодарили: 1206 раз
Контактная информация:

Как получить вывод программы на С после препроцессора?

#5

19 ноя 2020, 10:42

Restart1566, что значит нет?
тестовый файл

Код: Выделить всё

#define d1 10
#define d2 5
#define d3 d1/d2
int main()
{
  int a;
  a = d1;
  a = d2;
  a = d3;
	return 0;
}      
выхлоп

Код: Выделить всё

$ gcc -E test.c 
# 1 "test.c"
# 1 "<built-in>"
# 1 "<command-line>"
# 31 "<command-line>"
# 1 "/usr/include/stdc-predef.h" 1 3 4
# 32 "<command-line>" 2
# 1 "test.c"

int main()
{
  int a;
  a = 10;
  a = 5;
  a = 10/5;
 return 0;
}

no avatar

Автор темы
Restart1566
Сообщения: 218
Зарегистрирован: 04 сен 2016, 14:09
Решено: 1
Откуда: Москва
Благодарил (а): 5 раз
Поблагодарили: 17 раз
Контактная информация:

Как получить вывод программы на С после препроцессора?

#6

19 ноя 2020, 11:29

WWolf писал(а):
19 ноя 2020, 10:42
выхлоп
Да!
Прошу прощения, не дочитал в спешке...

СПАСИБО!!!

Закрыто

Вернуться в «Программирование, скриптинг, виртуализация»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 5 гостей