gpt4 book ai didi

c - 使用 gcc "define but not used"说明符时收到 "__thread"警告

转载 作者:太空宇宙 更新时间:2023-11-04 03:51:06 26 4
gpt4 key购买 nike

我目前有一个包含一些全局变量的库。我想让这些变量成为本地线程,所以我在它们前面添加了“__thread”说明符。它完成了工作,但编译器对这些变量给出了“定义但未使用”的警告。我用“-Wno-unused-variable”隐藏了警告,但我想知道为什么会这样,因为这些变量实际上正在库中使用。

谢谢!

最佳答案

如果它们真的是用 static 声明的,如评论中所示,您的编译器可能是正确的,这只是浪费资源,因为您在每次编译时都创建了一个新的线程局部变量单位。

如果您希望将全局变量的静态 分配更改为线程局部变量的合理使用,您必须做更多的工作。像这样使用声明

extern thread_local double eps;

在你的头文件和一个定义中

thread_local double eps;

仅在您的一个 .c 文件中。

另请注意,线程局部变量现在是 C 标准 (C11) 的一部分,那里的关键字是 _Thread_local,标准“缩写”为 thread_local。如果您的编译器尚不支持此功能,您可以轻松地 #define 有条件地将其添加到 __thread 或任何为您提供该功能的编译器扩展。

关于c - 使用 gcc "define but not used"说明符时收到 "__thread"警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20437755/

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