Функции C без файлов заголовков

Это должно быть очень тривиально. Я запускал очень простую программу на 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, но я не понимаю, почему это так, даже если я не включил соответствующий файл заголовка .

Кроме того, если посмотреть, как он использует версию файла заголовка, не должен ли я получать ошибку «нескольких реализаций» (или что-то в этом роде) при компиляции кода?

14
задан M.K. 8 May 2011 в 06:43
поделиться