33得票2回答
为什么在gcc编译器中,持有派生类引用的基类的std::unique_ptr不会显示警告,而裸指针会显示警告?

我有一个基类和派生类的层次结构。基类有一个虚函数,被派生类覆盖。class Base { public: ~Base(); virtual void other_functionality() = 0; }; class Derived : public ...

32得票8回答
GCC 缺少初始值设定项周围的括号

我在C语言中有一个结构体如下,我想将其初始化为全零。如何消除缺少花括号的警告?typedef struct { uint32_t incoming[FRAME_TYPE_MAX]; uint32_t outgoing[FRAME_TYPE_MAX]; uint32_t ...

31得票5回答
gcc警告:标量初始化器周围有大括号

我有一个如下定义的查找表,并且我正在使用GCC。当我编译时,我会收到警告:warning: braces around scalar initializer 这个警告是什么意思?我应该如何初始化这个LUT?我在初始化这些结构体时犯了错误吗? 帮帮我!! typedef struct TEC...

31得票8回答
如何正确地将浮点数和整数进行类型转换?

下面的代码通过一些比特操作执行快速反平方根运算。该算法可能是由Silicon Graphics在1990年代初开发的,它也出现在Quake 3中。更多信息 然而,我从GCC C++编译器得到以下警告:解引用类型转换后的指针将会违反严格别名规则。 在这种情况下,我应该使用static_cas...

31得票3回答
在C语言中如何进行显式的“fall-through”?

新版本的gcc提供了Wimplicit-fallthrough,对于大多数switch语句来说非常有用。但是我有一个switch语句,我想允许所有case语句之间的fall-through。 是否有一种明确指定fall through的方法?我希望不必为此文件编译Wno-implicit-...

31得票4回答
为什么gcc -Wall会警告零长度格式字符串?

我在网上搜寻了一些关于这个问题的信息,但并没有找到什么满意的答案。这个函数调用有特殊的行为吗?sprintf(someString, ""); 这是为什么在使用gcc和-Wall选项时会出现警告的解释?我只找到了C标准允许使用零长度格式字符串的说明。 我尝试了以下示例:#include &l...

30得票4回答
如何在GCC中消除外部库/第三方警告

在我正在工作的软件项目中,我们使用某些第三方库,但很遗憾这些库会产生令人烦恼的gcc警告信息。 我们正在努力消除所有警告,并希望在GCC中启用-treat-warnings-as-errors (-Werror)标志。 有没有办法让这些无法修复的第三方产生的警告信息消失?

29得票3回答
在C语言中,if ((x=0)) 的含义是什么?

所以显然在gcc/C中,编译器会在…时进行编译if ((x=0)){ some code } 使用时,使用is,当if (x=0){ some code } 如果使用了未声明的变量,编译器将拒绝编译。 这两者之间有什么区别? 需要注意的是,我知道 x==0 和 x=0 之间的区别。我只是在...

29得票2回答
在GCC中避免或警告从const char*到bool的隐式转换

请考虑以下代码:void foo(bool parameter) { std::cout << parameter << "\n"; } int main() { foo("const char *argument"); } 我希望编译器在将const...

28得票5回答
MSVC中与__attribute__ ((warn_unused_result))等效的是什么?

我发现 __attribute__ ((warn_unused_result)) 可以很好地鼓励开发人员不要忽略函数返回的错误码,但我需要它能够在 MSVC 和 gcc 以及兼容 gcc 的编译器上工作。微软 Visual Studio C/C++ 编译器是否有一个相同的机制?(我已经尝试阅读...