14

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

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 Exceeded

    от
  • Error: User Rate Limit ExceededcompilerError: User Rate Limit Exceeded-fError: User Rate Limit Exceeded

    от
  • Error: User Rate Limit Exceeded

    от
  • Error: User Rate Limit Exceeded

    от
  • Error: User Rate Limit Exceeded

    от Ákos Kovács
  • Error: User Rate Limit Exceededstart_timer();do_something();stop_timer();Error: User Rate Limit Exceededstart_timer();stop_timer();?

    от Albert Netymk
  • 26

    Error: User Rate Limit Exceeded

    staticstatic

  • 1

    Error: User Rate Limit Exceeded

    inlinenot

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