Вопрос по gcc, c – Почему GCC хранит пустые функции?

14

Error: User Rate Limit Exceeded

#ifdef OPTIONAL_SOMETHING
void do_something(int n, const char *s)
{
    while (n--) {
        printf("%s", s);
    }

    /* ...You might get the point, really do something... */
}
#else
void do_something(int n, const char *s)
{
    /* Empty body */
}
#endif

Error: User Rate Limit Exceeded

Копаясь в листинге сборки, кажется, что GCCcompiles and calls пустые функции, когдаoptimizations are disabled, Еслиoptimizations are enabledтакже с-O2 а также-O3, Этоcompiles only the necessary stack handling code, but it optimizes out the call instructions. All in all it keeps the function.

Примерно то же самое относится и к непустым, но неиспользуемым методам.

Следует просто выбросить все это, но это не так. Почему это поведение по умолчанию? И просто для любопытства: как я могу это устранить?

Error: User Rate Limit Exceededstart_timer();do_something();stop_timer();Error: User Rate Limit Exceededstart_timer();stop_timer();? Albert Netymk

Ваш Ответ

2   ответа
1

Error: User Rate Limit ExceededinlineError: User Rate Limit ExceedednotError: User Rate Limit Exceeded

Error: User Rate Limit Exceeded

void do_something(int n, const char *s);

Error: User Rate Limit Exceeded

26

Error: User Rate Limit ExceededstaticError: User Rate Limit ExceededstaticError: User Rate Limit Exceeded

Error: User Rate Limit Exceeded Ákos Kovács
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit ExceededcompilerError: User Rate Limit Exceeded-fError: User Rate Limit Exceeded
Error: User Rate Limit Exceeded

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