Clang没有看到strdup和其他一些功能

时间:2014-07-21 12:29:47

标签: c++ c clang

我正在尝试编译一个C ++程序,由于历史原因,它在OS X Mavericks上使用了一些C库函数。出于某种原因,Clang没有看到strduppopen和其他一些功能。我查看string.h内部,很明显它希望C标准提升,但我无法做到这一点,因为它是C ++代码。我该怎么办?

以下是我用来构建应用的内容:

#!/bin/sh

PLATFORM=$(uname -s)

SOURCES="..."

if [ "$PLATFORM" = "Linux" ]; then
    PATHS="..."
    LIBS="..."
elif [ "$PLATFORM" = "FreeBSD" ]; then
    PATHS="..."
    LIBS="..."
elif [ "$PLATFORM" = "Darwin" ]; then
    PATHS="..."
    LIBS="..."
else
    echo 'Unknown platform!'
fi

g++ -o app $PATHS -O3 -g3 -Wall -D_POSIX_SOURCE $SOURCES -pthread $LIBS

1 个答案:

答案 0 :(得分:1)

根据我正在观察的Posix标准(Posix 2008), 您要定义的符号名称为_POSIX_C_SOURCE。该 标准说Posix 1990指定了一个宏_POSIX_SOURCE, 已被_POSIX_C_SOURCE取代,所以它可能只是 是一个更新您的构建脚本的问题。 (我会继续前进 定义两者,也可能_XOPEN_SOURCE,只是为了确定。 _XOPEN_SOURCE700,另外两个到200809L;这些 定义似乎是Posix 2008所期望的。)