问题标签 [gcc-pedantic]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
29282 浏览

c - 错误:初始化元素在加载时不可计算

我有一个采用结构的函数,我试图将其变量存储在数组中:

但是gcc -Wall -ansi -pedantic-errors -Werror我收到以下错误:

初始化元素在加载时不可计算

在我看来很好,有什么问题?

0 投票
2 回答
390 浏览

c++ - 范围 g++ 迂腐编译

是否可以限制某些文件的 -pedantic 开关?例如,我使用 alsa-lib 编译东西,我参考标准

但是 -pedantic 对此文件感到恐慌。我愿意并有兴趣纠正我自己代码中的警告和奇怪之处,但不是 alsa 和其他不相关的第三方。

有没有办法确定 -pedantic 的使用范围?

0 投票
1 回答
805 浏览

gcc - static_cast / float / bitset / const 怪异

就在几个小时前,出现了以下问题:变量不能出现在常量表达式中

幸运的是,提供的答案确实解决了他的问题,但我无法重现该解决方案。

我试图进一步简化代码,现在我陷入了以下困境:

如果使用 编译-pedantic,则编译器接受第一个示例,但带有除法(但显然相同的数字)的示例被拒绝,并显示消息“length_2 不能出现在常量表达式中”。

没有-pedantic和有-pedantic -std=c++0x它被接受,没有任何进一步的警告。

这是完整的输出g++ -v(我为德语道歉,但我相信无论如何你都会得到正确的信息):

这种行为的原因是什么?我猜它1.0f被认为是一些特殊的常数,因此改变了 static_cast 的行为?

0 投票
1 回答
1598 浏览

c - 无需等待LF即可读取密钥的功能

我正在整个互联网上寻找一些可以从键盘读取键而无需等待 LF 的功能(例如 conio.h 中的 getch() )。不幸的是,我必须使用开关 -ansi 和 -pedantic 使用 gcc 编译它,这使得 getch() 对我来说毫无用处。也许您知道其他符合标准的功能?

0 投票
3 回答
2830 浏览

c++ - GCC 警告函数指针指向对象指针转换

在一般意义上,函数指针和对象指针之间的明确转换是未定义的行为,但 POSIX(参见:dlsym)和 WinAPI(参见:GetProcAddress)需要这样做。

鉴于此,并且鉴于此类代码无论如何都针对特定于平台的 API 的事实,它对函数指针和对象指针不兼容的平台的可移植性实际上是无关紧要的。

但是-Wpedantic无论如何都会警告它,并且#pragma GCC diagnostic ignored "-Wpedantic"没有效果:

我想保持启用-Wpedantic,因为它确实给出了很好的警告,但我不想让真正的警告和错误丢失在关于函数指针到对象指针转换的不相关警告的海洋中。

有没有办法做到这一点?

在 Windows (MinGW) 上运行 GCC 4.8.0:

代码示例

发射(使用-Wpedantic):

0 投票
1 回答
12849 浏览

c - 由于数组,ISO C90 禁止混合声明和代码。我该如何解决?

我尝试使用编译它-gcc,它按预期工作,但是当添加时-pedantic,它不会编译。我仍然是编程的初学者,这是我第一次遇到这个问题,所以这对我来说是一个很大的问题。

这是导致错误的代码:

如果您能解释解决方案是什么,而不仅仅是固定代码,我将不胜感激,因为我想学习。

0 投票
2 回答
450 浏览

c - Ansi C 和临时文件

我需要在 mmap 中使用临时文件中的整数文件描述符。如果在仍然符合标准的情况下没有简单的方法来做到这一点,那么这种需求可能需要改变。

我最初使用以下方法获得了 FILE 流:

然后用...

一切都很好,直到我在 fileno 的手册页中注意到以下内容。

fileno不是 c99 的一部分。我在网上查看了一种获取临时文件名或其文件描述符的简单方法,该方法在使用时不会引发错误

到目前为止,我发现的最好的事情是:

http://www.di-mgt.com.au/c_function_to_create_temp_file.html

我很想知道其他人正在做什么来解决这个问题,是否有一个我在某处遗漏的手册页或者我可以在 c99 中使用但我忽略的明显内容?

更新:我写了一个小测试程序来看看我哪里出错了。请原谅缺乏错误检查,我试图保持简短。我在 Debian 机器上使用 clang 和 gcc 运行了它:

使用 clang 或 gcc 运行它,注意命令开头的rm -f 。

这很有效,这意味着我错过了有关使用 -std=c99 -pedantic 的一些信息,因为当我尝试包含任何非标准标头时,我希望它会惨遭失败,即在这种情况下,我会预料到尝试包含这些标头时会出现错误。 ..

我很想知道为什么上述程序会编译,即在标题中设置的东西会关闭警告还是我在滥用 gcc?

0 投票
1 回答
442 浏览

c - -Wpedantic 错误类型参数在转换后递增

我有一个类似的代码

其中destsrc是空指针和n大小。目标是重新实现一个 memcpy 函数。使用 gcc 编译此代码时,一切正常,但是当我添加-Wpedantic标志时,我有四个警告“错误的类型参数要递增”。

Google 告诉我,在尝试对 void 指针使用算术时会发生这种情况,因为在这种情况下 gcc 将 void 类型视为 1 字节类型,但旧版编译器不应该这样做。然后我必须将指针转换为 char 指针,但如您所见,我已经做到了!

任何想法?

0 投票
2 回答
3703 浏览

c - C - 控制到达非空函数的结尾

我正在编写一个线程程序,而 pthread_create 方法需要一个 void* 函数。

我收到“控制到达非无效函数的末尾”警告,我明白为什么(因为我没有任何正式的返回声明)——我的问题真的是在这种情况下我应该返回什么?

只返回NULL可以吗?我不认为我的返回值会影响程序中的任何其他内容,但我只是想知道在使用多线程程序进行编程时避免此警告的标准是什么。

0 投票
1 回答
100 浏览

linux - 为什么某些不推荐使用的类在使用 g++ 编译时不会生成警告?

我今天注意到我的一个头文件仍在使用auto_ptr<>模板。

我使用 -std=c++11 来确保在 C++11 中编译,并使用 -pedantic 和 -Werror 来检测不推荐使用的用法。所以我想我应该在编译那个头文件时出错,因为 auto_ptr 被标记为已弃用,你怎么看?

该课程的一部分具有令人反感的定义:

下面列出了所有命令行选项。我正在使用 g++ 版本 4.8.2 (Ubuntu 4.8.2-19ubuntu1),我们可以看到我在列表中有 -pedantic 和 -Werror:

cd /home/snapwebsites/BUILD/snapwebsites/lib &&/usr/bin/c++ -DCONTROLLED_VARS_DEBUG -DDEBUG -DQT_CORE_LIB -DQT_DEBUG -DQT_XMLPATTERNS_LIB -DQT_XML_LIB -D_DEBUG -Dsnapwebsites_EXPORTS -std=c++11 -Werror -Wall -Wextra -pedantic -Wcast-align -Wcast-qual -Wctor-dtor-隐私 -Wdisabled-optimization -Winit-self -Wlogical-op -Wmissing-include-dirs -Woverloaded-virtual -Wredundant-decls -Wshadow -Wsign-promo -Wstrict-null-sentinel -Wstrict-overflow=4 -Wundef -Wno-未使用 -Wunused-variable -Wno-variadic-macros -Wno-括号 -Wno-unknown-pragmas -Wwrite-strings -Wswitch -fdiagnostics-show-option -fPIC -Wunused-parameter -Wfloat-equal -Wold-style-cast - Wnoexcept -g -g -O0 -fPIC -I/home/snapwebsites/snapwebsites -I/home/snapwebsites/snapwebsites/lib -I/home/snapwebsites/BUILD/snapwebsites -I/home/snapwebsites/BUILD/snapwebsites/lib -我/home/snapwebsites/BUILD/dist/include-I/home/snapwebsites/BUILD/dist/include/advgetopt -I/home/snapwebsites/BUILD/dist/include/QtSerialization -isystem /usr/include/qt4 -isystem /usr/include/qt4/QtXmlPatterns -isystem /usr /include/qt4/QtXml -isystem /usr/include/qt4/QtCore -isystem /usr/include/qt4/QtDesigner -isystem /usr/include/qt4/QtDeclarative -isystem /usr/include/qt4/QtScriptTools -isystem /usr /include/qt4/QtDBus -isystem /usr/include/qt4/QtSql -isystem /usr/include/qt4/QtOpenGL -isystem /usr/include/qt4/QtNetwork -isystem /usr/include/qt4/QtWebKit -isystem /usr /include/qt4/QtHelp -isystem /usr/include/qt4/QtUiTools -isystem /usr/include/qt4/QtTest -isystem /usr/include/qt4/QtScript -isystem /usr/include/qt4/QtSvg -isystem /usr /include/qt4/Qt3Support -isystem /usr/include/qt4/QtGui -isystem /usr/share/qt4/mkspecs/default -isystem /usr/include/proc -o CMakeFiles/snapwebsites.目录/snap_initialize_website.cpp.o -c /home/snapwebsites/snapwebsites/lib/snap_initialize_website.cpp

g++ 中会不会有一个错误,它不会偶尔检测到这种不推荐使用的模板?