[英]itoa () does not work on 32bit tdm-gcc 5.1 even on including stdlib.h
我有一個使用 itoa() 的 C++ 程序。 我在 64 位編譯器(TDM-GCC-5.1)上編譯它,它編譯並工作。 但是當我使用 32 位 TDM-GCC-5.1 編譯器編譯它時,我收到錯誤 itoa () 未在此范圍內聲明。 我嘗試在兩台不同的 32 位機器上編譯它,但仍然出現相同的錯誤,並且通過包含 cstdlib 和 stdlib.h 在這兩種情況下仍然出現相同的錯誤。 它在 64 位機器上編譯並運行良好。 但是為什么在 32 位編譯器上不這樣做呢??
你能建議一些 32 位的替代方案嗎?
代碼:
#include <iostream>
#include <stdlib.h>
using namespace std;
main()
{
int test;
char t[2];
itoa(test,t,10);
}
編譯器輸出:
C:\Users\hello\Desktop\Untitled1df.cpp In function 'int main()':
C:\Users\hello\Desktop\Untitled1df.cpp [Error] 'itoa' was not declared in this scope
截圖: IDE截圖
itoa
不是標准函數。 它是由某些實現提供的,而不是由其他實現提供的。 避免在便攜式軟件中使用它。
64 位版本的 TDM GCC 在其默認模式下恰好提供 itoa,而 32 位版本則沒有。 為了保持版本之間的行為一致,請嘗試例如-std=c++11 -DNO_OLDNAMES -D_NO_OLDNAMES
。
例如,符合標准的替代方案是
char buffer[20];
snprintf (buffer, sizeof(buffer), "%d", number);
說到可移植性,沒有int
main()
是一個嚴重的錯誤,在 Windows 的某些版本的 GCC 中錯誤地沒有診斷。 這是這些版本的 GCC 中的一個錯誤。 此外,訪問未初始化的變量test
會觸發未定義的行為。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.