【发布时间】:2014-01-15 12:01:44
【问题描述】:
我只在中使用#include <stdio.h>
#include <stdio.h>
void strcat(char* s, char* t);
int main()
{
char str1[12] = "hello";
char str2[] = ",world";
strcat(str1, str2);
printf("%s\n", str1);
return 0;
}
void strcat(char* s, char* t)
{
int i = 0, j = 0;
while(*s != '\0')
i++;
while((*(s + i++) = *(t + j++)) != '\0');
}
但是当我构建它时,控制台输出:
--------------------Configuration: test16 - Win32 Debug--------------------
Linking...
LIBCD.lib(strcat.obj) : error LNK2005: _strcat already defined in test16src.obj
为什么? strcat 是否存在于stdio.h 中?
PS: 能否通过描述与其他文件链接时的进度来解释链接错误?
【问题讨论】:
-
头文件和库在 C 中不是一一对应的,而是在完全不同的编译阶段处理的。
-
作为一个站点说明,拥有一个具有 C 库函数名称的函数是一个坏主意,具有几乎相同的语义,但仍然有不同的原型。
标签: c error-handling stdio strcat