0

就像我编译的那样:

#include<stdio.h> 

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

我收到此错误/输出:

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

C:\Users\Abc\Appdata\Local\Temp/ccQLcaaa.o(.txt+ox32):abc.c:undefined reference to 'print'

ld 返回 1 个退出状态。

你们中的任何人都可以推断出这个错误并告诉我编译器想说什么(尤其是“ undefined reference”)

4

4 回答 4

9

未定义对“打印”的引用

print不是在中声明的函数stdio.h。你的意思肯定是printf

于 2013-05-22T06:14:45.573 回答
1

编译器从源代码创建目标代码文件。

链接器创建可以运行的可执行文件。

如果您收到链接器错误,则表示您的代码编译正常,但找不到所需的某些函数或库。在您的情况下,链接器会阻止创建可执行文件,因为print它不是属于的标准函数stdio.h,因此它无法找到对它的引用,就像它说的那样。正如其他人告诉你的那样,你可能想要printf而不是printTurning compiler's error on 应该真的对你有帮助。

于 2013-05-22T07:58:48.477 回答
1

您引用的消息以“\c”开头。这被称为“转义序列”,因为它应该有一些特殊的含义。但是,“\c”是未知的,例如“\n”表示换行,“\r”(回车),“\t”(制表符)或其他。

这是你得到的“警告”,只要编译器解析 hello-world 字符串。后来它抱怨print其他人已经指出的内容。

于 2013-05-22T07:55:51.370 回答
0

如果您尝试在hello\cworld 没有警告的情况下打印字符串,那么您必须执行以下操作

printf("hello\\cworld");

否则,如果您试图弄清楚是否\c会做任何特别的事情,那么它不会。编译器遇到 a\并认为下一个字符将具有特殊含义并因此执行该方式。它适用于\n\r等等,但是当编译器看到\c他试图告诉你要么你\c写错了,因此警告你。

于 2013-05-22T07:59:57.183 回答