__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))
будет реализовывать функцию, если она еще не была реализована. Это его истинное поведение? Что тут происходит?