簡體   English   中英

c程序編譯警告:分配使指針從整數開始而沒有強制轉換[默認啟用]

[英]warnings with c program compiling :assignment makes pointer from integer without a cast [enabled by default]

當我通過以下行編譯名為Online_ana.c的程序(通過運行makefile)時:

if ((fifoFile = open((FIFO1!=NULL) ? FIFO1 : "fifo1", O_RDONLY)) == -1)

遇到此類警告:

Online_ana.c:54:17:警告:賦值使指針從整數開始而沒有強制轉換[默認啟用]

這是怎么了? 希望有人能幫助我。 提前致謝!!

這有幾處錯誤。

1)您正在為指針分配一個整數值。 這並不總是錯誤的,但令人懷疑。 它通常表示錯誤,但在某些情況下還可以。 這就是為什么編譯器會發出警告而不是錯誤的原因。 您應該確保您是認真的。

2)就像@Barmar所說,open返回一個整數(文件句柄)而不是FILE *。 如果將一個分配給另一個,那就錯了。

3)有點無關,但是在這樣的情況下進行分配和比較幾乎總是一個壞主意。 它很容易在不想要的地方鍵入= =並導致錯誤。 應避免使用,使用1行進行分配,使用1行進行比較。 我知道老派的C風格是使用單行,但是如今,這被認為是一個壞主意。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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