gpt4 book ai didi

c++ - 与 C 代码相比,为什么 C++ 代码不需要 "#define _POSIX_C_SOURCE 200809L"?

转载 作者:太空宇宙 更新时间:2023-11-04 00:57:44 25 4
gpt4 key购买 nike

当我使用“POSIX 间隔计时器”或进行信号处理时,我必须插入

#define _POSIX_C_SOURCE 200809L

在我的任何文件中的第 1 行。但我发现只有 C 代码需要它,而 C++ 代码不需要。

g++ 编译器与 gcc 编译器的工作方式有何不同关于这个问题?


下面是我的系统环境(gcc:相同版本)

 user@~ $ g++ --version
g++ (Ubuntu 5.4.0-6ubuntu1~16.04.10) 5.4.0 20160609
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

然后我在 CMakeLists.txt 中添加这一行构建项目

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -std=c++14 -Wall")

最佳答案

g++定义了_GNU_SOURCE,后者定义了_POSIX_C_SOURCE。

这样做是因为它是标准 c++ 模板库所必需的。

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=2082 进行更全面的讨论

https://www.gnu.org/software/libc/manual/html_node/Feature-Test-Macros.html 处的宏描述

关于c++ - 与 C 代码相比,为什么 C++ 代码不需要 "#define _POSIX_C_SOURCE 200809L"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53037824/

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