我想一個整數轉換爲字符寫入一個文件,使用該行:C錯誤:未定義參考「_itoa」
fputc(itoa(size, tempBuffer, 10), saveFile);
,我收到此警語和信息:
警告: 'itoa'
未定義的引用 '_itoa'
我已經列入STDLIB的隱式聲明。 h,並正在編譯:
gcc -Wall -pedantic -ansi
任何幫助將不勝感激,謝謝。
我想一個整數轉換爲字符寫入一個文件,使用該行:C錯誤:未定義參考「_itoa」
fputc(itoa(size, tempBuffer, 10), saveFile);
,我收到此警語和信息:
警告: 'itoa'
未定義的引用 '_itoa'
我已經列入STDLIB的隱式聲明。 h,並正在編譯:
gcc -Wall -pedantic -ansi
任何幫助將不勝感激,謝謝。
itoa
不是標準的一部分。我懷疑-ansi
阻止你使用它,或者它根本不可用。
我會建議使用sprintf()
如果用C99標準走,你可以使用snprintf()
這當然是安全的。
char buffer[12];
int i = 20;
snprintf(buffer, 12,"%d",i);
這在這裏告訴你,在編譯階段itoa
是未知的:
warning: implicit declaration of 'itoa'
因此,如果此功能在您的系統,您缺少聲明它的頭文件上。然後編譯器會假定它是一個函數,它接受非特定數量的參數並返回一個int
。
這距離裝載階段
undefined reference to '_itoa'
消息解釋說,還裝載機沒有找到任何他知道的圖書館這樣的功能。
所以你應該遵循Brian的建議,用標準函數代替itoa
。
我猜測itoa可能不存在於您正在使用的標準C庫中。你可以嘗試指定標誌'-fpermissive'來查看代碼是否有效。 – GWW 2011-03-25 04:46:21
「官方」標準庫中沒有'itoa'這樣的函數。顯然你使用的標準庫不提供'itoa'。你的'pedantic'和'-ansi'標誌將無濟於事。恰恰相反,他們實際上可以通過隱藏非標準功能使事情變得更糟(我不知道他們是否真的這麼做)。嘗試編譯沒有他們。 – AnT 2011-03-25 04:49:42