[英]Explanation of strange error in c
就像我編譯的那樣:
#include<stdio.h>
main()
{
print("hello\cworld");
}
我收到此錯誤/輸出:
警告:未知的轉義序列'\\ c'
C:\\ Users \\ Abc \\ Appdata \\ Local \\ Temp / ccQLcaaa.o(.txt + ox32):abc.c:對'print'的未定義引用
ld返回1個退出狀態。
你們中的任何人都可以推斷出這個錯誤,然后告訴我,編譯器要說的是什么(尤其是“ undefined reference
”)
未定義對“打印”的引用
print
不是在stdio.h
聲明的函數。 當然,您的意思是printf
。
您引用的消息以“ \\ c”開頭。 這被稱為“轉義序列”,因為它應具有某些特殊含義。 但是,“ \\ c”是未知的,例如“ \\ n”表示換行,“ \\ r”(回車),“ \\ t”(制表符)或其他。
編譯器解析hello-world字符串后,這就是您得到的“警告”。 后來它抱怨print
別人已經指出了什么。
編譯器從源代碼創建目標代碼文件。
鏈接器創建可以運行的可執行文件。
如果收到鏈接器錯誤 ,則表明您的代碼已編譯正常,但找不到所需的某些功能或庫。 在您的情況下,鏈接器阻止創建可執行文件,因為print
不是stdio.h
的一部分,因此它找不到引用 ,就像它說的那樣。 正如其他人告訴您的那樣,您可能想要printf而不是print
啟用編譯器錯誤確實可以為您提供幫助。
如果您嘗試在沒有警告的情況下打印字符串hello\\cworld
,則必須執行以下操作
printf("hello\\cworld");
否則,如果您試圖弄清楚\\c
是否會做任何特殊的事情,那么它不會。 編譯器遇到一個\\
並認為下一個字符將具有特殊含義,因此以這種方式執行。 它適用於\\n
, \\r
等,但是當編譯器看到\\c
他試圖告訴您您寫錯了\\c
並因此警告您。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.