9/08/2009

Перебор аргументов в shell скрипте.

Вчера открыл для себя очень удобную возможность в shell-скриптах:
оказывается если в цикле for не задать список аргументов, то в качестве оного используется переменная $@ - список аргументов командной строки.
Вот пример:
for i
do
echo $i;
done

Предупреждения GCC

Этот пост небольшое дополнение к посту Белого Рыцаря, в котором речь идет об опциях, включающих те или иные предупреждения компилятора gcc.

Для того чтобы включить "все предупреждения, gcc нужно передать опции -Wall и -Wextra, однако, вопреки расхожему мнению, эти опции включают далеко не все предупреждения, которые может выдавать gcc.

А вот для того, чтобы посмотреть, какие предупреждения будут выключены или включены, вследствие использования той или иной опции, нужно выполнить команду (для -Wall):

gcc -c -Q -Wall --help=warnings

которая выдаст следующее:
Следующие ключи контролируют предупреждения компилятора:

-Wabi [выключено]


-Waddress [включено]


-Waggregate-return [выключено]


-Waliasing


-Walign-commons


-Wall


-Wampersand


-Warray-bounds [включено]


Список получится длинный и зависит от версии компилятора.
Эта же команда работает и для ключей оптимизации:
gcc -c -Q -O3 --help=optimizers

На выходе тоже получится длинный список включенных и отключенных возможностей оптимизации.

А если выполнить команду:

gcc -c -Wall --help=warnings

То можно посмотреть, что означает каждая из опций, контролирующих предупреждения:

Следующие ключи контролируют предупреждения компилятора:

-Wabi Предупреждать о различиях по сравнению с компиляцией при помощи компилятора, совместимого с ABI


-Waddress Warn about suspicious uses of memory addresses


-Waggregate-return Предупреждать о возвращении функциями
структур, объединений, массивов


-Waliasing Warn about possible aliasing of dummy arguments


-Walign-commons Warn about alignment of COMMON blocks


-Wall Включить все основные виды предупреждений.

Вот так.