gcc-warning 相关问题

GCC是GNU编译器集合,包括gcc C编译器和g ++ C ++编译器等。它具有强大的警告功能,可以揭示C和C ++代码中的编码错误。

GCC 抛出错误,而 clang 在使用 _mm512_permutevar_epi32 时工作正常

我从 GCC 编译器收到此错误 - 错误:“_mm512_permutevar_epi32”没有依赖于模板参数的参数,因此“_mm512_permutevar_epi32”的声明必须是

回答 1 投票 0

为什么这个悬空指针即使在释放内存后仍显示相同的内存地址?

为什么下面程序中的悬空指针在释放内存后仍显示相同的内存地址? #包括 #包括 int main() { 整数a=1; int *ptr_...

回答 1 投票 0

在这种情况下“忽略模板参数的属性”是什么意思?

我的任务是消除一个大型 C++ 项目中的警告,其中大部分不是我编写的,并且针对以下内容发出了更常见的警告之一: std::unique_ptr 我的任务是消除一个大型 C++ 项目中的警告,其中大部分不是我编写的,并且针对以下情况发出了更常见的警告之一: std::unique_ptr<DIR, decltype(&closedir)> dir(opendir(dirToDelete.c_str()), closedir); 警告是 ignoring attributes on template argument 'int (*)(DIR*) {aka int(*)(__dirstream*)}' [-Wignored-attributes] std::unique_ptr dir(opendir(dirToDelete.c_str()), closedir); (DIR、opendir和closedir都在标准头dirent.h中定义。) 我知道这段代码的作用,并且它正在工作,但是警告是什么意思?编译器引用的被忽略的属性是什么?这意味着什么? 被忽略的属性很可能是GCC的nonnull,这表明参数不能为空指针。您可以使用以下代码重现此警告: #include <memory> void closedir(struct DIR*) __attribute__((nonnull(1))); std::unique_ptr<struct DIR, decltype(&closedir)> dir(nullptr, &closedir); <source>:5:48: warning: ignoring attributes on template argument 'void (*)(DIR*)' [-Wignored-attributes] 5 | std::unique_ptr<struct DIR, decltype(&closedir)> dir(nullptr, &closedir); | 问题是函数指针的属性在用作模板参数时会被丢弃。如果您继续使用函数指针,则必须删除该属性(请参阅从函数指针或引用中删除 __attribute__((...))),或者您必须抑制警告(请参阅选择性删除使用 GCC 的警告消息)。 解决方案 一般来说,您不应在删除器是函数指针的情况下创建智能指针,因为这会增加智能指针的大小1),并妨碍优化2)。您正在创建一个 std::unique_ptr,它可以保存与 closedir 具有相同签名的删除器,但删除器原则上可以是任何函数。 相反,更喜欢自定义类型作为删除器: #include <memory> // Exposition-only, obviously use #include <dirent.h> void closedir(struct DIR*) __attribute__((nonnull(1))); // Note 1: In C++20, you could also decltype(lambda) as a deleter type. struct closedir_deleter { // Note 2: Consider adding noexcept. void operator()(struct DIR* d) const { closedir(d); } }; // Note 3: You can create a type alias for this specialization of std::unique_ptr. // Note 4: It is no longer necessary to pass a deleter as an argument to the // constructor, because the deleter is default-constructible, and not a pointer. std::unique_ptr<struct DIR, closedir_deleter> dir; 参见编译器资源管理器中的实时示例 这不仅是更好的做法,它还为您消除了警告。 1) 这是因为std::unique-ptr必须存储指针本身以及函数指针。对于简单的空删除器,它不必存储任何内容。 2) 如果编译器不知道函数指针的确切值,则无法将函数指针优化为直接函数调用。众所周知,函数指针的内联性能通常很差。

回答 1 投票 0

有关将指针赋值给 const 指针的警告

字符a = 0; 字符 b[20] = {0}; 字符c[][20] = {{0}}; const char *aPtr; const char *bPtr; const char (*cPtr)[20]; 字符(*dPtr)[20]; 无效测试(无效) { aPtr = &a; bPtr = b; dPtr = &am...

回答 1 投票 0

禁用 ScopedGuard 的“未使用的变量”

我正在与 Andrei Alexandrescu 和 Petru Marginean 一起玩瞄准镜守卫对象 当您使用 -Wall -Werror 编译它时,您会收到“未使用的变量”错误。以下代码摘自LOKI CL...

回答 1 投票 0

GCC 关于将浮点数提升为 double 的警告

因为 math.h 声明了 int isnan(double x) 和 int isnanf(float x),所以当使用 gcc -O0 -Wall -Wextra -Wpedantic -Wconversion -Wdouble-promotion 编译时,我预计会有以下代码生成。 ..

回答 1 投票 0

如何修复 gcc 警告:缺少“struct <anonymous>”字段的初始值设定项?

我有一个包含匿名结构的联合类型定义。当尝试初始化它时,我总是收到 gcc 4.9.2 (-Wall -Wextra -pedantic) 关于缺少字段初始化程序的警告。然而它

回答 1 投票 0

How to fix C++ gcc compile warning for padding of struct

我有以下看起来无伤大雅的代码: void myFunc(){ 结构立场{ 长双间隔; QString名称; }; // [...] } 当我使用标准版本构建它时......

回答 3 投票 0

使用 printf 格式说明符生成错误符号警告

是否有任何方法可以让 gcc 或 clang 生成警告,以便使用 printf() 格式说明符生成有符号变量与无符号变量不匹配的警告? 我知道使用 -Wformat,但是只代表...

回答 2 投票 0

在“.section”指令中制作 g++ 意外标记

我在 M1 macbbok air 中使用 brew gcc。当我试图编译我的代码时,它会弹出如下错误消息: /var/folders/xc/9rxcj3_s6qbdrxygnq8gvjcc0000gn/T//ccvSMulw.s:3603:29: 错误:

回答 0 投票 0

已解决 - 在 gcc 编译器上使用“-Wall”标志时是否可以挑选变量以避免 [-Wunused-variable] 的“错误”肯定警告?

我声明了两个变量: 字符元音 [5] = {'a', 'e', 'i', 'o', 'u'}; char nStrings[2][4] = { {'a', 'c', 'p', 'x'}, {'b', 'd', 'q', 'y'} }; 并用它们与ìf语句进行比较,...

回答 1 投票 0

在 gcc 编译器上使用“-Wall”标志时是否可以挑选变量以避免 [-Wunused-variable] 的“错误”正面警告?

我声明了两个变量: 字符元音 [5] = {'a', 'e', 'i', 'o', 'u'}; char nStrings[2][4] = { {'a', 'c', 'p', 'x'}, {'b', 'd', 'q', 'y'} }; 并用它们与ìf语句进行比较,...

回答 1 投票 0

错误:对于 C++ 源文件,cppStandard 已从“c++17”更改为“”

这是我的 VS 代码中显示的完整消息: [3/31/2023, 8:48:21 PM] 对于 C++ 源文件,cppStandard 从“c++17”更改为“”。 [3/31/2023, 8:48:21 PM] 对于 C 源 ...

回答 0 投票 0

GCC 可能未初始化警告 - 误报?

我花了一天时间尝试在 GCC 12.2 中调试可能未初始化的警告。我最终将代码缩减为一个最小的可重现示例,表明该警告是误报。 该...

回答 0 投票 0

如何让 vscode 使用“正确”的 exe 路径? C++

我是菜鸟,但我会尽可能具体。 所以,我的问题是:当我尝试在右上角的小按钮上运行程序时,它可以运行,但是当我尝试在我的终端中使用 &q 运行它时...

回答 0 投票 0

GCC 意外警告?

我正在做一个个人项目,我做了这样的代码(在一个静态的小辅助函数中): char *tmp = NULL; 如果 ((tmp = strchr(mode, 'b') != NULL) && tmp - 模式 < 3) return

回答 2 投票 0

我创建了一个文件,当我运行代码时出现以下内容,为什么? [关闭]

这是发生的错误。 谁能告诉我怎么解决?? 我已经更改了文件的位置(路径),但它仍然在发生。

回答 0 投票 0

有没有办法在整数提升时得到警告?

例如: 在这种情况下,我希望有一个编译器警告。 这可能吗? #包括 int 主要(无效) { 字符我; 整数计数 = 555; 对于(我= 0;我< count; i+...

回答 3 投票 0

Gcc在MacOS 10.15.4 Catalina上不能用?

我想重新开始写c++代码,我才发现自制版的gcc不能编译任何c++、c、甚至fortran程序。例如,我试着编译以下程序......

回答 1 投票 0

如何修复C语言中的分段故障错误?

我是C语言的新手,我想不通。代码编译后让我运行一次,但当我进入时,它给我分段故障。我运行gdb,回溯发现分段故障 ...

回答 1 投票 0

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.