【问题标题】:How to avoid compiler warning when using PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP and -Wextra使用 PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP 和 -Wextra 时如何避免编译器警告
【发布时间】:2011-06-27 13:04:08
【问题描述】:

我想在我的项目中使用 GCC 编译器选项 -Wextra。 但它会导致 PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP 出现问题。

以下代码:

static pthread_mutex_t g_mutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;

导致以下警告:

test.c:39: warning: missing initializer
test.c:39: warning: (near initialization for `g_mutex.__data.__nusers')

有什么办法可以避免这个警告吗?

Gcc 版本是 3.4.5。 pthread 版本是 2.3.5。

【问题讨论】:

  • gcc 应该避免对来自系统头文件的内容发出警告。我想知道您的 gcc 是否太旧,或者您是否包含 pthread.h 错误(可能是 "" 而不是 <>?)所以 gcc 不会将其视为系统头文件..?
  • 警告不是来自系统标头;它来自 test.c;因此不会被抑制。

标签: c gcc pthreads


【解决方案1】:

使用最新的 GCC 版本(恐怕不是您提到的那个),您可以使用选项 -Wno-missing-field-initializers 使此类警告静音。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-31
    • 2019-02-21
    相关资源
    最近更新 更多