当我使用 -std=gnu99 编译时,我还应该定义 _GNU_SOURCE 吗?

2023-12-31

我使用了一些 GNU 扩展,并意识到如果我将 gnu99 设置为 C 标准来使用,我可以省略 #define _GNU_SOURCE。 gnu99 是否暗示 _GNU_SOURCE 或者使用它是否仍然更安全或强制以避免问题?


您应该区分语言和库功能; -std=gnu99 启用 GNU 语言功能,_GNU_SOURCE 启用 GNU 库功能。

如果您使用任何库功能,我建议您定义 _GNU_SOURCE,这样对于代码的读者来说就很清楚了。此外,当您的代码在提供 GCC 但不提供 glibc 的平台上编译时,这可能会使事情变得更加明显。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当我使用 -std=gnu99 编译时,我还应该定义 _GNU_SOURCE 吗? 的相关文章

  • 用 C++ 进行服装建模 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在编写一些软件 最终会绘制一个人体框架 可以配置各种参数 并且计划是在假人身上放置某种衣服 我研究
  • 在 C# 中创建具有单独列的分隔文本

    我一直在尝试在 C 中创建一个制表符限制的文本文件 以便数据正确显示在单独的列中 Firstname Lastname Age John Smith 17 James Sawyer 31 我尝试过 t 字符 但我得到的只是 Firstnam
  • VB.NET 相当于 C# 属性简写吗?

    是否有与 C 等效的 VB NET public string FirstName get set 我知道你能做到 Public Property name As String Get Return name ToString End Ge
  • 如何读取扩展文件属性/文件元数据

    因此 我按照教程使用 ASP net core 将文件 上传 到本地路径 这是代码 public IActionResult About IList
  • 启动时出现 OData v4 错误:找不到段“Whatever”的资源

    我正在构建新的 v4 服务 一切进展顺利 直到我为新模型 实体添加了新控制器 并在启动站点进行测试运行时收到此错误 控制器似乎编码正确 就像其他控制器一样 控制器 CustomersOData 中的操作 GetFeed 上的路径模板 Cus
  • 在 Unity 进程和另一个 C# 进程之间进行本地 IPC 的最快方法 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我希望每秒大约 30 次从 C 应用程序向我的 Unity 应用程序传送大量数据 由于 Unity 不支持映射内存和管道 我考虑了 t
  • C++中的类查找结构体数组

    我正在尝试创建一个结构数组 它将输入字符串链接到类 如下所示 struct string command CommandPath cPath cPathLookup set an alarm AlarmCommandPath send an
  • 在 C# 中循环遍历文件文件夹的最简单方法是什么?

    我尝试编写一个程序 使用包含相关文件路径的配置文件来导航本地文件系统 我的问题是 在 C 中执行文件 I O 这将是从桌面应用程序到服务器并返回 和文件系统导航时使用的最佳实践是什么 我知道如何谷歌 并且找到了几种解决方案 但我想知道各种功
  • PlaySound 可在 Visual Studio 中运行,但不能在独立 exe 中运行

    我正在尝试使用 Visual Studio 在 C 中播放 wav 文件 我将文件 my wav 放入项目目录中并使用代码 PlaySound TEXT my wav NULL SND FILENAME SND SYNC 我按下播放按钮 或
  • 将 log4net 与 Autofac 结合使用

    我正在尝试将 log4net 与 Autofac 一起使用 我粘贴了这段代码http autofac readthedocs org en latest examples log4net html http autofac readthed
  • 等待线程完成

    private void button1 Click object sender EventArgs e for int i 0 i lt 15 i Thread nova new Thread Method nova Start list
  • 私有模板函数

    我有一堂课 C h class C private template
  • HttpWebRequest 在第二次调用时超时

    为什么以下代码在第二次 及后续 运行时超时 代码挂在 using Stream objStream request GetResponse GetResponseStream 然后引发 WebException 表示请求已超时 我已经尝试过
  • 如何从main方法调用业务对象类?

    我已将代码分为业务对象 访问层 如下所示 void Main Business object public class ExpenseBO public void MakeExpense ExpensePayload payload var
  • gcc 的配置选项如何确定默认枚举大小(短或非短)?

    我尝试了一些 gcc 编译器来查看默认枚举大小是否很短 至少一个字节 强制使用 fshort enums 或无短 至少 4 个字节 强制使用 fno short enums user host echo Static assert 4 si
  • 为什么在setsid()之前fork()

    Why fork before setsid 守护进程 基本上 如果我想将一个进程与其控制终端分离并使其成为进程组领导者 我使用setsid 之前没有分叉就这样做是行不通的 Why 首先 setsid 将使您的进程成为进程组的领导者 但它也
  • 如何在按钮单击时模拟按键 - Unity

    我对 Unity 中的脚本编写非常陌生 我正在尝试创建一个按钮 一旦单击它就需要模拟按下 F 键 要拾取一个项目 这是我当前的代码 在编写此代码之前我浏览了所有统一论坛 但找不到任何有效的东西 Code using System Colle
  • 编译时“strlen()”有效吗?

    有时需要将字符串的长度与常量进行比较 例如 if line length gt 2 Do something 但我试图避免在代码中使用 魔法 常量 通常我使用这样的代码 if line length gt strlen Do somethi
  • 线程和 fork()。我该如何处理呢? [复制]

    这个问题在这里已经有答案了 可能的重复 多线程程序中的fork https stackoverflow com questions 1235516 fork in multi threaded program 如果我有一个使用 fork 的
  • 防止在工厂方法之外实例化对象

    假设我有一个带有工厂方法的类 class A public static A newA Some code logging return new A 是否可以使用 a 来阻止此类对象的实例化new 那么工厂方法是创建对象实例的唯一方法吗 当

随机推荐

  • XPath 选择具有指定名称的所有元素

    我相信只需使用标准 XPath 就可以回答这个问题 无需参考实现 但仅供参考 我使用 Net 中的 XML DOM 对象 System Xml 命名空间 我有一个节点从 XML 文档深处的某处传递给我的函数 并且我想选择该节点的所有具有特定
  • 工厂女孩多重 has_many 通过的

    我需要创建一些由多个组成的工厂 这是我的模型 Topic has many plan topics has many plans through gt plan topics PlanTopic belongs to plan belong
  • 使用 Qt C++ QWebView 会导致 GUI 运行缓慢。

    当页面通过 QWebView 加载时 我注意到程序的其他元素开始运行缓慢 特别是 GUI 解决这个问题的最佳解决方案是什么 我不能说在使用时用户界面的其余部分有任何明显的减慢QWebView 即使是在动力相当不足的 SBC 上 我想知道是否
  • 对 Amazon S3 的写入是否是原子的(全有或全无)?

    我正在向 S3 读取和写入大量文件 我只是想知道是否需要针对文件 写了一半 的情况进行编码 例如S3 PUT Write 仅 一半 有效 或者写入 S3 是全有还是全无 我知道存在读写最终一致性问题 我认为 这在很大程度上是一个单独的问题
  • 如何使SeparatedListAdapter的节标题在滚动时推动上一节?

    我正在使用分离列表适配器 下一个节的标题到达顶部时 节标题突然发生变化 对于 iOS 应用程序 下一个部分的标题会向上推旧的部分标题并占据其位置 如何在Android应用程序中实现它 有什么帮助吗 Here http code google
  • 可以在源代码中添加有关错误修复的注释吗?

    如果是这样 你在哪里划清界限 我和我的同事在这个问题上存在分歧 我见过这样的事情 fixes bug 22 to fixed bug shouldnt be decrementing i 如果更改相当显着并且从根本上改变了该方法的编写目的
  • 调试器不会因错误而停止

    我正在使用 Visual Studio 2012 开发 Asp net MVC4 项目 当调试过程中出现错误时 它通常会在错误处停止 但突然间 调试器并没有停止 只是吐出如下错误信息网页 应用程序中的服务器错误 字典中不存在给定的键 描述
  • 使用jedis管道获取值

    我有一个 id 列表 我想用它来使用 java 客户端 jedis 从 Redis 服务器检索哈希值 正如文档中提到的 Jedis 提供了一种通过声明 Response 对象来使用管道的方法 然后同步管道以获取值 Pipeline p je
  • Active Storage Rails 5.2 出现 Blob 错误

    我刚刚升级了5 1 4 应用程序升级到 5 2 并尝试将 Paperclip 替换为 ActiveStorage 目前 当尝试使用图像更新现有记录时 出现以下错误 无法自动加载常量 ActiveStorage Blob Analyzable
  • 如何将 unicode 数字转换为整数?

    阿拉伯语和中文有自己的数字字形 int适用于所有不同的数字书写方式 我无法重现该行为 python 3 5 0 gt gt gt from unicodedata import name gt gt gt name RUMI DIGIT F
  • sql中如何存储树形结构?

    这是我使用 sqlite 的模式 我不确定这是否是在 sql 中创建树结构的好方法 因为我必须遍历很多次才能获取整个树 而不是根据顶部注释提取整个树并构建python 中的树 有人可以给我一些建议吗 BEGIN CREATE TABLE t
  • 如何使用 Castle ActiveRecord 在保存或更新期间自动填充字段

    问题 我们数据库中的所有表都有 CreatedDate CreatedBy ChangedDate ChangedBy 字段 我希望在保存 更新 ActiveRecord 实体时自动设置这些字段 我的第一次尝试是重写 Save 和 Upda
  • 订购 PHP 数组

    我有一个 php 数组 带有注释 必须以不同的方式排序 数组内容的顺序应该是这样的 parent child child child parent child child etc 父评论有 parent 0 子评论具有其父评论的 ID 例如
  • 如何在 Ubuntu 上的 GTK3 (GI) 和 Python 3 中获取剪贴板内容

    在 Python 2 中 通过我的机器 Ubuntu 12 10 中安装的内容 我可以执行以下操作 import gtk cb gtk clipboard get content cb wait for text 从剪贴板获取文本 然而 在
  • 规避“catch_warnings”上下文管理器错误,该错误会重置警告注册表,导致无限打印警告

    在我正在使用的模块深处 xarray 但这并不重要 catch warnings上下文管理器导致警告被一遍又一遍地打印 而不是像它应该的那样只打印一次 如果没有这样的上下文管理器 行为将如预期 cat mwe py usr bin env
  • 如何将 g++ 从 MinGW 添加到 PATH

    我在 Windows 10 上使用 Visual Studio Code 并尝试构建一个程序 称为Bus从源文件Bus cpp 与来自 MinGW 的 g 我使用从之前的线程中读取的各种方法修改了tasks json 文件 我提供了task
  • PHP 和“打开”mysqli

    我无法找到有关如何 打开 mysqli 的文档 我正在运行 OS X SL 据我了解 由于安装了 php5 mysqli 扩展也应该已经存在 这就像在 php ini 中添加 LoadModule 行一样简单吗 如果我需要重新编译 php
  • 使用 Google API 的 Chrome 清单

    我需要一些关于如何获取扩展的 chrome 清单以允许服务器和应用程序之间进行 Google API 对话的建议 当我直接指向应用程序 而不是扩展 时 应用程序加载正常 但是我的问题是 当我将其作为扩展加载时 出现以下错误 Refused
  • Oracle 查询作为 SSIS 中的源定义了错误的数据类型

    我有一个有点复杂的查询 我想将其用作 SSIS 包中的源 我创建 OLE DB 源 将访问模式指定为 SQL 并将查询粘贴到命令文本框中 当我单击 预览 时 示例数据会返回 一切看起来都很好 但是 当我尝试运行该包时 我收到 外部列与数据源
  • 当我使用 -std=gnu99 编译时,我还应该定义 _GNU_SOURCE 吗?

    我使用了一些 GNU 扩展 并意识到如果我将 gnu99 设置为 C 标准来使用 我可以省略 define GNU SOURCE gnu99 是否暗示 GNU SOURCE 或者使用它是否仍然更安全或强制以避免问题 您应该区分语言和库功能