问题标签 [gcc6]
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.
gcc - 如何抑制 cc1:警告:无法识别的命令行选项 -Wno-implicit-fallthrough
我i686-w64-mingw32-gcc -Wno-implicit-fallthrough ...
在 Linux 上使用 gcc 6.3.0 运行,我收到以下消息:
如何抑制此消息?不过,我确实想指定-Wno-implicit-fallthrough
,当使用较新版本的 gcc 编译代码时,它很有用。所以我想-Wno-implicit-fallthrough
在可用的情况下生效;否则不应该有像上面显示的警告。
c++ - 概念指针数组
我试图弄清楚是否可以将概念用作类的一种接口,而无需虚拟表的开销。我整理了一个可以工作的示例,但是我必须将我的类实例存储在由它们的共同继承而不是它们的共同概念定义的数组中。我没有看到关于概念数组的帖子中讨论过任何内容,但 g++ 6.3.0 似乎不允许这样做。错误是:
如果我将IShape*
数组更改为Rectangle*
数组(如导致第一个错误的行下方的注释行中),程序将按预期编译和运行。
为什么不允许使用概念指针数组?这可能会在未来的 c++ 版本中被允许吗?
(我的示例包括虚函数和继承,尽管我的目标是消除它们。我将它们包括在内只是为了方便Rectangle*
版本工作。如果我能让IShape*
版本工作,我计划删除虚函数和遗产。)
这是代码:
感谢@Yakk 关于使用元组的想法。G++ 6.3.0 尚未完全实现 #include 文件以包含 C++17 标准定义的 apply(),但它在 std::experimental 中可用。(我认为它可能会添加到更高版本的 g++ 中。)这是我最终得到的结果:
c - 如何将像'51'这样的两位数字符放入字符数组中?
错误警告:多字符字符常量 [-Wmultichar] array[0][0]='51'; ^~~~ 17.4.c:6:17:警告:隐式常量转换溢出 [-Woverflow]
c - 带有 glibc / libm 和 float32 的 atan2 的错误结果
我目前正在为涉及许多困难数学运算的医疗设备开发固件。目标处理器支持硬件中的浮点运算,但仅支持float32
(aka single
)。
为了模拟行为并证明我的公式和代码的正确性,我已将固件的相关/数学部分移植到 Linux 中的 GCC 工具链(gcc 6.3.0,libc6 2.24),仔细检查float32
无处不在,并且没有使用会降低数学运算的精度或标准兼容性的编译器开关;值得注意的是,没有任何一个-ffast-math
或它的朋友。
现在,事实证明,对于一小组输入参数,我得到了意想不到的结果。我已经找到了这个问题,并得出结论,为(准确地说:)为一组非常小的输入参数libm
计算了错误的结果。arctan
atan2
例如,如果我有
f_Temp
被计算为46.9755516f
,正确的结果在哪里46.975548972f
。
请注意,我一般都知道不同浮点数据类型、舍入错误等问题。
然而,我的感觉是,即使考虑到 的低精度,上面显示的误差也太高了一个数量级float32
,不幸的是,对于接下来的计算,这个误差太大了。
此外,只有很小的atan2
函数可能输入参数子集受到问题的影响。
任何人都可以简单地解释一下这是一个错误,libm
还是仅仅是由于计算的不精确float32
和需要大量的顺序操作atan2
?
c - 是否可以强制 GCC 在没有内联汇编的情况下输出我给它的确切位指令?
我编写了如下代码:
这是一个将异或操作分解为更多指令的操作。我正在使用 gcc-6.3.0。即使我使用-O0
标志进行编译,gcc 也会将其转换为反汇编中的一条xor
指令。是否可以强制它使用标志编写那些特定的 asm 指令,或者我必须使用内联汇编语言?
c++ - 这是有效的 C++ 代码吗?这不起作用
此代码打印:
A B C D
A B C D
没看懂,怎么str[3]
打印ABCD
?
编译器:GCC 6.3
gcc - 制作依赖关系:使用 gcc 跳过供应商和包头?
我正在开始一个新项目并考虑使用 gcc 6.3.1-MM
将依赖项生成到一个名为 的文件Make.Dep
中,我将从Makefile
.
该-M
选项输出所有标题,包括系统标题。该-MM
选项不输出系统头文件,但我仍然沉浸在数以千计的供应商和包头文件中,例如 Sybase 和 Boost,我认为这不会改变(如果他们这样做,我很高兴不得不这样做手动完全重建)。
显然,我可以将 gcc -MM 包装在 perl 脚本中,或者您知道我认为哪些目录是软件包,但是有一些更广泛接受的解决方案吗?
请注意,我的一个供应商的标头会查找特定的 gcc 定义的预处理器符号来配置它们的可移植性。我宁愿不手动管理一组这样的符号来允许使用一些非 gcc 方法(例如,makedepend
)生成依赖项。
ubuntu-16.04 - 将 Ubuntu 从 16.04 升级到 18.04 时出错,GCC-6-base
我正在尝试将我的 Ubuntu 从 16.04 升级到 18.04,同时执行
&
并不断获得
以下软件包已被保留:GCC-6-base
我尝试安装、升级和删除此软件包,但不断收到
以下软件包具有未满足的依赖关系: libgail-common: Depends: libgail18 (= 2.24.30-1ubuntu1.16.04.2) 但不会安装 libgcc1: Depends: GCC-6-base (= 6.0.1-0ubuntu1 ) 但要安装 6.3.0-21ubuntu1~16.04.york0 libwxgtk3.0-0v5:取决于:libgl1-mesa-glx 但不会安装或 libgl1 取决于:libgtk2.0-0 (>= 2.24. 0) 但它不会安装 E: Error, pkgProblemResolver:: Resolve generated break, 这可能是由持有的包引起的。
c++ - 为什么使用“constexpr”会在代码块中给出主要表达式错误
仅在代码块中,我在 constexpr 之前得到预期的主要表达式。有没有办法来解决这个问题?这是我要测试的代码。我已将 c++ 17 设置为编译器。我正在使用 GNU GCC 编译器。GCC (MinGW.org GCC-6.3.0-1) 6.3.0。我在 Visual Studio 中没有收到此错误。
这是我得到的错误。