c中奇怪错误的解释

时间:2013-05-22 06:09:03

标签: c

正如我编译:

#include<stdio.h> 

main() 
{ 
print("hello\cworld"); 
}

我收到了这个错误/输出:

  

警告:未知转义序列'\ c'

     

C:\用户\美国广播公司\应用程序数据\本地\温度/ ccQLcaaa.o(.TXT + ox32):abc.c:未定义   参考'print'

     

ld返回1退出状态。

有人可以推断出这个错误并告诉我,换句话说,编译器想要说什么(特别是“undefined reference”一个)

4 个答案:

答案 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,因此警告你