簡體   English   中英

C錯誤沖突類型

[英]C error conflicting types

我有以下錯誤

error : conflicting types for 'sprintf'
error : conflicting types for 'vsprintf'
error : conflicting types for 'vprintf'
error : conflicting types for 'select'

在我的頭文件中,代碼是

extern char *sprintf(char*,const char*,... )

實際上我包括#include <stdio.h>

但是對於日曬,我們寫成

# ifndef HPUX
extern char *sprintf(char*,const char*,... )

不必自己聲明功能,而應包含<stdio.h> (如果您不打算從標准庫中聲明眾所周知的sprintf函數,而是從某些自定義函數中聲明,則應為函數選擇一個不同的名稱)。

您的聲明導致類型沖突,因為同名的標准庫函數返回ìnt ,而不是char*

不要手動聲明標准函數,只需包含<stdio.h>

(而且,如果您堅持要自己聲明它們,至少要正確選擇類型...)

除非您告訴編譯器忽略標准包含(和系統C庫),否則您可能只想包含標准標頭,即正如David Gelhar (第一個回答)所說的那樣。

如果使用的是其他C庫,則仍將包括標准標頭,但需要通過將不同的include路徑傳遞給編譯器。

您可能會喜歡閱讀extern打算完成的工作。

根據此Solaris手冊頁(對於Solaris DDI)<sys/ddi.h>sprintf定義為返回char * 似乎該功能定義僅用於設備驅動程序開發。 如果您未實現設備驅動程序,請堅持使用標准C版本(返回int ),方法是包含<stdio.h>並且不要在標頭或源代碼中的任何位置再次聲明它。

暫無
暫無

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

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