gcc опции компиляции для функции
От: maks1180  
Дата: 14.11.22 16:44
Оценка:
В одном cpp файле есть несколько функций, часть нужно скомпилировать с флагом -O2 а остальные с флагом -Os.
Можно ли так сделать не разбивая файл cpp на части ?

Вариант #ifdef #endif разделить и за 2 раза скомпилировать 1 cpp файл — мне не нравиться.

Не нравиться, потому-что иногда я компилирую и линкую сразу за один вызов gcc, в этом случая не получиться разбить cpp на части или скомпилировать его 2 раза
===============================================
(реклама, удалена модератором)
Re: gcc опции компиляции для функции
От: σ  
Дата: 14.11.22 16:54
Оценка: +2 -1 :)
M>В одном cpp файле есть несколько функций, часть нужно скомпилировать с флагом -O2 а остальные с флагом -Os.
M>Можно ли так сделать не разбивая файл cpp на части ?
Да.
Re[2]: gcc опции компиляции для функции
От: maks1180  
Дата: 14.11.22 20:46
Оценка:
M>>В одном cpp файле есть несколько функций, часть нужно скомпилировать с флагом -O2 а остальные с флагом -Os.
M>>Можно ли так сделать не разбивая файл cpp на части ?
σ>Да.

Как ?
===============================================
(реклама, удалена модератором)
Re[3]: gcc опции компиляции для функции
От: σ  
Дата: 14.11.22 20:56
Оценка: 4 (1)
M>>>В одном cpp файле есть несколько функций, часть нужно скомпилировать с флагом -O2 а остальные с флагом -Os.
M>>>Можно ли так сделать не разбивая файл cpp на части ?
σ>>Да.

M>Как ?


https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-optimize-function-attribute
https://gcc.gnu.org/onlinedocs/gcc/Function-Specific-Option-Pragmas.html
Re[4]: gcc опции компиляции для функции
От: maks1180  
Дата: 15.11.22 03:11
Оценка:
σ>https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-optimize-function-attribute
σ>https://gcc.gnu.org/onlinedocs/gcc/Function-Specific-Option-Pragmas.html

Спасибо большое! Помогли вот такие строчки
#ifdef __GNUG__
#pragma GCC optimize ("Os")
#endif

Сделал через #ifdef, что-бы msvc не ругался.

Только теперь не смог сообразить как их в одно строку сделать, пытался через #define XXX #pragma, но GCC ругается на это.
===============================================
(реклама, удалена модератором)
Re[5]: gcc опции компиляции для функции
От: wl. Россия  
Дата: 15.11.22 06:19
Оценка:
Здравствуйте, maks1180, Вы писали:

M>Только теперь не смог сообразить как их в одно строку сделать, пытался через #define XXX #pragma, но GCC ругается на это.


так не сделаешь, препроцессор однопроходной
Re[5]: gcc опции компиляции для функции
От: σ  
Дата: 15.11.22 11:12
Оценка:
M>Спасибо большое! Помогли вот такие строчки
M>#ifdef __GNUG__
M>#pragma GCC optimize ("Os")
M>#endif

M>Сделал через #ifdef, что-бы msvc не ругался.


А зачем он ругается? Any pragma that is not recognized by the implementation is ignored.

M>Только теперь не смог сообразить как их в одно строку сделать, пытался через #define XXX #pragma, но GCC ругается на это.


https://gcc.gnu.org/onlinedocs/cpp/Pragmas.html:
> C99 introduced the _Pragma operator. This feature addresses a major problem with ‘#pragma’: being a directive, it cannot be produced as the result of macro expansion. _Pragma is an operator, much like sizeof or defined, and can be embedded in a macro.
Отредактировано 15.11.2022 11:59 σ . Предыдущая версия .
Re[6]: gcc опции компиляции для функции
От: CreatorCray  
Дата: 15.11.22 16:29
Оценка:
Здравствуйте, ?, Вы писали:

?>А зачем он ругается? Any pragma that is not recognized by the implementation is ignored.
Чтоб знал что проигнорено, а то будешь в счастливом неведении а код будет работать не так, как ты ожидаешь.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.