我在Cygwin上使用g ++(GCC)4.9.3。我無法在C++ 14標準中使用getchar_unlocked
或putchar_unlocked
。
考慮此示例代碼putchar_unlocked不能在C++ 14標準中工作
#include <cstdio>
int main() {
putchar_unlocked('1');
return 0;
}
當我編譯和
g++ foo.cpp && a.exe && rm ./a.exe
運行我得到預期的輸出1.
但是當我做
g++ -std=c++14 foo.cpp && a.exe && rm ./a.exe
我收到錯誤說putchar_unlocked沒有宣佈。
foo.cpp: In function 'int main()':
foo.cpp:4:22: error: 'putchar_unlocked' was not declared in this scope
putchar_unlocked('1');
^
...是的。當你使用強制編譯器符合標準的'-std = *'選項時,你不會得到非標準函數。這很重要,我不確定你的期望。 – hvd
@ hvd,在[Ideone](https://ideone.com/wO7TPz)中工作? – avamsi
我看到至少有三種可能性:1)Ideone沒有使用'-std = C++ 14'。 2)Ideone包含額外的命令行選項以使非標準功能可用。 3)Ideone正在使用不符合標準的庫實現。如果Ideone記錄它傳遞給編譯器的命令行選項,可以檢查其中的前兩個。 – hvd