gpt4 book ai didi

c++ - Clang 看不到 strdup 和其他一些函数

转载 作者:行者123 更新时间:2023-11-28 06:46:44 25 4
gpt4 key购买 nike

我正在尝试编译一个 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

最佳答案

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

关于c++ - Clang 看不到 strdup 和其他一些函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24865145/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com