__attribute__ ((слабый)) переопределяет существующую функцию

Я пробую некоторые решения моего вопроса.

Скажем, я работаю в системе, которая реализует itoa, У меня есть этот код:

char *my_itoa (int a, char *b, int c)
{
    return itoa(a, b, c);
}

char* __attribute__ ((weak)) itoa(int a, char* b, int c)
{
     strcpy(b, "No itoa");
}

Если я позвоню my_itoa(10, str, 10) с вышеуказанным кодом, puts(str) дает мне "Нет Итоа".

Однако, если я просто напишу:

char *my_itoa (int a, char *b, int c)
{
    return itoa(a, b, c);
}

и позвонить my_itoa(10, str, 10), puts(str) дает мне "10".

Я понимаю, что __attribute__ ((weak)) будет реализовывать функцию, если она еще не была реализована. Это его истинное поведение? Что тут происходит?

0 ответов

Другие вопросы по тегам