簡體   English   中英

C中奇怪錯誤的解釋

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM