Это должно быть очень тривиально. Я запускал очень простую программу на C для сравнения строк:
#include <stdio.h>
int strcmp(char *s, char *t);
int main()
{
printf("Returned: %d\n", strcmp("abc", "adf"));
return 0;
}
int strcmp(char *s, char *t)
{
printf("Blah\n");
while (*s++ == *t++)
{
if (*s == '\0')
return 0;
}
return *s - *t;
}
Итак, я в основном реализовал свою собственную версию функции strcmp, которая уже присутствует в string.h. Когда я запускаю приведенный выше код, я вижу только возвращаемые значения 0, 1 или -1 (по крайней мере, для моего небольшого набора тестовых случаев) вместо фактических ожидаемых результатов. Теперь я понимаю, что это потому, что код не идет к моей реализованной версии strcmp, а вместо этого использует версию функции string.h, но я не совсем понимаю, почему это так, даже если у меня нет т включил соответствующий заголовочный файл.
Кроме того, учитывая, как он использует версию файла заголовка, не должен ли я получить ошибку «нескольких реализаций» (или что-то в этом роде) при компиляции кода?