LINUX.ORG.RU

Обрезание части вывода gcc

 ,


0

1

Приветствую.

А можно ли каким-то образом обрезать часть вывода, который попадает в stdout в результате выполнения некоторой программы, в соответствии с определёнными правилами?

Объясню, что хочу иметь на практике.

Предположим, что мы пытаемся скомпилировать следующий код при помощи gcc:

int main()
{
   int arr[];
}

Разумеется, на это мы получим ошибку компиляции примерно следующего вида:

source.cpp: In function 'int main()': source.cpp:3:12: error: storage size of 'arr' isn't known source.cpp:3:8: warning: unused variable 'arr' [-Wunused-variable]

Можно ли сделать так, чтобы мы не видели описание ошибки, а лишь место, где она возникла?

Что-то наподобие такого:

source.cpp: In function 'int main()': source.cpp:3:12: error: source.cpp:3:8: warning:


даже я могу это набыдлокодить

[dunkaist@ddesk tmp]$ gcc main.c -o main -Wall 2>&1 | sed s/error.*$/error\ here/g | sed s/warning.*$/warning\ here/g
main.c: In function ‘main’:
main.c:3:8: error here
main.c:3:8: warning here
main.c:4:1: warning here
[dunkaist@ddesk tmp]$ cat main.c 
int main()
{
   int arr[];
}
[dunkaist@ddesk tmp]$
d ★★★★ ()

Как-то так:

awk -F \: 'BEGIN {ORS=""} {for(i = 1; i <= 6; i++) print $i ":"; print '\n'}'
Выдает, что ты написал. Можно очевидным образом поменять вывод по вкусу.

Или регуляркой.

proud_anon ★★★★★ ()
Последнее исправление: proud_anon (всего исправлений: 1)

Обрезание части вывода gcc

...

А можно ли каким-то образом обрезать часть вывода, который попадает в stdout в результате выполнения некоторой программы, в соответствии с определёнными правилами?

Так тебе gcc или какой-то программы?

Сделал файл Makefile

default: main

и main.cpp с твоим кодом.

Открыл main.cpp в vim и выполнил :make - встало на строчку с ошибкой и в статусной строке написано

error: storage size of ‘arr’ isn’t known

Оно?

anonymous ()
Ответ на: комментарий от anonymous

Сделал файл Makefile

совет не по делу: в gmake есть, в частности, и правило вида %: %.cpp

так что можно вообще никакой мейкфайл не писать, а в виме просто сказать :make main

anonymous ()

Я вообще ничего не понял. Для чего это всё нужно?

mr_doug ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.