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