【问题标题】:c++ compile fail with error: no member named 'snprintf' in namespace 'std'c++ 编译失败并出现错误:命名空间“std”中没有名为“snprintf”的成员
【发布时间】:2012-04-20 17:11:29
【问题描述】:

几分钟前就可以编译成功了。 在我尝试通过按下“配置文件”按钮来构建项目之后,问题就出现了。之后,我的项目就不能再编译了。

错误信息是:

在 /Users/wangyj1203/workspace/project_x/svn/src/c++/src/latte/latte_prefix.h:24 包含的文件中:
在 /Users/wangyj1203/workspace/project_x/svn/src/c++/src/latte/../../../../../../../../../ 中包含的文件中usr/include/c++/4.2.1/iostream:44:
在 /Users/wangyj1203/workspace/project_x/svn/src/c++/src/latte/../../../../../../../../../ 中包含的文件中usr/include/c++/4.2.1/ostream:44:
在 /Users/wangyj1203/workspace/project_x/svn/src/c++/src/latte/../../../../../../../../../ 中包含的文件中usr/include/c++/4.2.1/ios:42:
在 /Users/wangyj1203/workspace/project_x/svn/src/c++/src/latte/../../../../../../../../../ 中包含的文件中usr/include/c++/4.2.1/iosfwd:44:
在 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/usr/include/c++/4.2.1/bits/c++locale.h 中包含的文件中: 48:
在 /Users/wangyj1203/workspace/project_x/svn/src/c++/src/latte/../../../../../../../../../ 中包含的文件中usr/include/c++/4.2.1/cstdio:52:
在 /Users/wangyj1203/workspace/project_x/svn/src/c++/src/latte/../../../../../../../../../ 中包含的文件中usr/include/c++/4.2.1/tr1/stdio.h:37:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/usr/include/c++/4.2.1/tr1/cstdio:46:14:错误:没有成员命名命名空间“std”中的“snprintf”
  使用 std::snprintf;
        ~~~~~^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/usr/include/c++/4.2.1/tr1/cstdio:47:14:错误:没有成员命名命名空间“std”中的“vsnprintf”
  使用 std::vsnprintf;
        ~~~~~^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/usr/include/c++/4.2.1/tr1/cstdio:49:14:错误:没有成员命名命名空间“std”中的“vfscanf”
  使用 std::vfscanf;
        ~~~~~^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/usr/include/c++/4.2.1/tr1/cstdio:50:14:错误:没有成员命名命名空间“std”中的“vscanf”
  使用 std::vscanf;
        ~~~~~^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/usr/include/c++/4.2.1/tr1/cstdio:51:14:错误:没有成员命名命名空间“std”中的“vsscanf”
  使用 std::vsscanf;
        ~~~~~^
在 /Users/wangyj1203/workspace/project_x/svn/src/c++/src/latte/latte_prefix.h:24 包含的文件中:
在 /Users/wangyj1203/workspace/project_x/svn/src/c++/src/latte/../../../../../../../../../ 中包含的文件中usr/include/c++/4.2.1/iostream:44:
在 /Users/wangyj1203/workspace/project_x/svn/src/c++/src/latte/../../../../../../../../../ 中包含的文件中usr/include/c++/4.2.1/ostream:44:
在 /Users/wangyj1203/workspace/project_x/svn/src/c++/src/latte/../../../../../../../../../ 中包含的文件中usr/include/c++/4.2.1/ios:42:
在 /Users/wangyj1203/workspace/project_x/svn/src/c++/src/latte/../../../../../../../../../ 中包含的文件中usr/include/c++/4.2.1/iosfwd:44:
在 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/usr/include/c++/4.2.1/bits/c++locale.h 中包含的文件中: 48:
/Users/wangyj1203/workspace/project_x/svn/src/c++/src/latte/../../../../../../../../../usr/include/ c++/4.2.1/cstdio:99:11:错误:全局命名空间中没有名为“FILE”的成员
  使用 ::FILE;
        ~~^
/Users/wangyj1203/workspace/project_x/svn/src/c++/src/latte/../../../../../../../../../usr/include/ c++/4.2.1/cstdio:100:11:错误:全局命名空间中没有名为“fpos_t”的成员
  使用 ::fpos_t;
        ~~^
/Users/wangyj1203/workspace/project_x/svn/src/c++/src/latte/../../../../../../../../../usr/include/ c++/4.2.1/cstdio:102:11:错误:全局命名空间中没有名为“clearerr”的成员
  使用 ::clearerr;
        ~~^

编译脚本是:

ProcessPCH++ /var/folders/r7/g6yvk_7s2zg0w0tndvr74qwc0000gn/C/com.apple.Xcode.501/SharedPrecompiledHeaders/latte_prefix-calwfgjtbaftrwfxqlbgygvcoqtm/latte_prefix.h.pth latte_prefix.h 普通 x86_64 c++ com.apple.compilers 1_0.编译器
    cd /Users/wangyj1203/workspace/project_x/svn/src/c++/src/latte
    setenv LANG en_US.US-ASCII
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -x c++-header -arch x86_64 -fmessage-length=0 -Wno-trigraphs -fpascal-strings -O0 -Wno-missing -field-initializers -Wno-missing-prototypes -Wreturn-type -Wno-non-virtual-dtor -Wno-overloaded-virtual -Wno-exit-time-destructors -Wformat -Wno-missing-braces -W括号 -Wswitch -Wno -unused-function -Wno-unused-label -Wno-unused-parameter -Wunused-variable -Wunused-value -Wno-uninitialized -Wno-unknown-pragmas -Wno-shadow -Wno-four-char-constants -Wno-sign -比较 -Wno-shorten-64-to-32 -Wno-newline-eof -Wc++11-extensions -DNET_DUMP=0 -DDEBUG=1 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX。平台/开发者/SDKs/MacOSX10.7.sdk -fasm-blocks -Wdeprecated-declarations -Winvalid-offsetof -mmacosx-version-min=10.7 -g -Wno-conversion -Wno-sign-conversion -I/Users/wangyj1203/工作区/project_x/svn/src/c++/src/latte/build/latte.build/Debug/latte.build/latte.hmap -I/Users/wangyj120 3/workspace/project_x/svn/src/c++/src/latte -I/Users/wangyj1203/workspace/project_x/svn/src/c++/src/latte/../../sdk -I/Users/wangyj1203/工作区/project_x/svn/src/c++/src/latte/build/Debug/include -I/Users/wangyj1203/workspace/project_x/svn/src/c++/src/latte/build/latte.build/Debug/latte。 build/DerivedSources/x86_64 -I/Users/wangyj1203/workspace/project_x/svn/src/c++/src/latte/build/latte.build/Debug/latte.build/DerivedSources -Wall -F/Users/wangyj1203/workspace/ project_x/svn/src/c++/src/latte/build/Debug --serialize-diagnostics /var/folders/r7/g6yvk_7s2zg0w0tndvr74qwc0000gn/C/com.apple.Xcode.501/SharedPrecompiledHeaders/latte_prefix-calwfgjtbaftrwfxqlbgygvcoqtm/latte_prefix.h. -c /Users/wangyj1203/workspace/project_x/svn/src/c++/src/latte/latte_prefix.h -o /var/folders/r7/g6yvk_7s2zg0w0tndvr74qwc0000gn/C/com.apple.Xcode.501/SharedPrecompiledHeaders/latte_prefix-calwfgjtbaftrwfxqlbgy /latte_prefix.h.pth -MMD -MT 依赖项 -MF /var/folders/r7/g6yvk_7s2zg0w0tndvr74qwc0000gn/C /com.apple.Xcode.501/SharedPrecompiledHeaders/latte_prefix-calwfgjtbaftrwfxqlbgygvcoqtm/latte_prefix.h.d

【问题讨论】:

  • 为什么cstdiostdio.h 都包含在构建过​​程中?奇怪。
  • 另外,请在 Apple 讨论论坛查看 this thread
  • 这很奇怪。我只是单击 Profile 按钮,不能再编译了。我没有修改任何代码或项目文件。
  • 如果我在终端中使用 Makefile 它将构建成功。但无法在 Xcode 中构建(版本 4.3.2)

标签: c++ xcode stl


【解决方案1】:

snprintf() 来自C99 标准。您不应该为此使用命名空间std。只需使用全局命名空间。

不要忘记包含stdio.h

【讨论】:

  • C++11 对此进行了封装。所以 XCode 的 libc++ 也有。
  • 但是 C++11 目前还没有普及。我建议使用久经考验的老式语法。
  • 你不是说cstdio 而不是stdio.h吗?
  • @SergeyK。我试过了,不管怎样都可以。我只是认为 在 C++ 中已弃用
猜你喜欢
  • 2021-03-04
  • 1970-01-01
  • 2013-06-09
  • 2017-02-13
  • 2012-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多