正如我编译:
#include<stdio.h>
main()
{
print("hello\cworld");
}
我收到了这个错误/输出:
警告:未知转义序列'\ c'
C:\用户\美国广播公司\应用程序数据\本地\温度/ ccQLcaaa.o(.TXT + ox32):abc.c:未定义 参考'print'
ld返回1退出状态。
有人可以推断出这个错误并告诉我,换句话说,编译器想要说什么(特别是“undefined reference
”一个)
答案 0 :(得分:9)
对'print'的未定义引用
print
不是stdio.h
中声明的函数。当然你的意思是printf
。
答案 1 :(得分:1)
您引用的消息以“\ c”开头。这被称为“逃逸序列”,因为它应该具有一些特殊含义。但是,“\ c”是未知的,例如“\ n”表示换行,“\ r”(回车“),”\ t“(制表符)或其他。
一旦编译器解析hello-world字符串,这就是你得到的“警告”。后来它抱怨print
其他人已经指出的内容。
答案 2 :(得分:1)
编译器从源代码创建目标代码文件。
链接器创建可以运行的可执行文件。
如果收到链接器错误,则表示您的代码已编译确定,但无法找到所需的某些功能或库。在您的情况下,链接器阻止创建可执行文件,因为print
不是stdio.h
的标准函数,因此无法找到引用,就像它说的那样。正如其他人告诉你的那样,你可能想要printf而不是print
转换编译器的错误应该真的对你有帮助。
答案 3 :(得分:0)
如果您尝试在没有警告的情况下打印字符串hello\cworld
,那么您必须执行以下操作
printf("hello\\cworld");
否则,如果你试图找出\c
是否会做任何特别的事情,那么事实并非如此。编译器遇到\
并认为下一个字符具有特殊含义,因此执行该方式。它适用于\n
,\r
等等,但是当编译器看到\c
时,他试图告诉你,你错误地写了\c
,因此警告你