c++11 - 如何在 g++ -std=c++11 version 4.8.2 中使用 snprintf()

标签 c++11 g++ cygwin printf

我正在尝试使用 -std=c++11 编译在 4.8.2 版 g++ 中使用 snprintf 的代码,但没有成功。
为什么 g++ 不识别 snprintf?我可以在仍然使用 snprintf 和 c++11 的同时克服这个问题吗?

我得到以下信息:

make all  Building file: ../src/cppHWtest.cpp Invoking: Cygwin C++
Compiler g++ -std=c++11 -D"hash_map=unordered_map" -O0 -g3 -Wall -c
-fmessage-length=0 -MMD -MP -MF"src/cppHWtest.d" -MT"src/cppHWtest.d" -o "src/cppHWtest.o" "../src/cppHWtest.cpp" cygwin warning:   MS-DOS style path detected: C:\Users\poudyal\workspace\cppHWtest\Debug
Preferred POSIX equivalent is:
/cygdrive/c/Users/poudyal/workspace/cppHWtest/Debug   CYGWIN
environment variable option "nodosfilewarning" turns off this warning.
Consult the user's guide for more details about POSIX paths:
    http://cygwin.com/cygwin-ug-net/using.html#using-pathnames ../src/cppHWtest.cpp: In function 'int main()':
../src/cppHWtest.cpp:20:35: error: 'snprintf' was not declared in this
scope   snprintf(buff, 10, "%s", "Hell O");
                                   ^ make: *** [src/cppHWtest.o] Error 1 src/subdir.mk:18: recipe for target 'src/cppHWtest.o' failed

**** Build Finished ****

最佳答案

可能比将模式切换到 -std=gnu++11 侵入性更小的解决方案是 -U__STRICT_ANSI__ .这将启用 #if !defined(__STRICT_ANSI__) || (__STDC_VERSION__ >= 199901L)在 stdio.h:234 (GCC 4.8.3)。

关于c++11 - 如何在 g++ -std=c++11 version 4.8.2 中使用 snprintf(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20149633/

相关文章:

windows - Windows 上的 git svn rebase 问题

c++ - 防止在不同类型的 std::function 中包装 lambda

C++11 线程等待行为:std::this_thread::yield() 与 std::this_thread::sleep_for( std::chrono::milliseconds(1) )

c++ - 具有单个成员(也是自定义结构)的自定义结构(包装器)的集合,到单个成员的集合

c++ - 模板扣: porting to C++11

c++ - 将可执行文件链接到共享库

c++ - C++ 中的 is_open() 函数始终返回 0 值,而 getLine(myFile, line) 不返回任何内容

linker - 未找到链接 libruli.so 的 g++ 符号

c++ - 从模板继承非模板

python - Cygwin python 安装证书