问题标签 [gcc4]
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.
templates - 指定了多个复制构造函数
使用 Visual C++ 2010,我有一个这样的类:
根据 C++ 标准,A 行和 B 行都被认为是复制构造函数,而 C 是转换构造函数。我收到一条警告说我声明了多个复制构造函数,这并不奇怪。但是,如果我删除其中任何一个,static_assert 将失败并且代码将无法编译,这意味着模板构造函数获得了控制权。
我确信这种行为遵循函数重载的规则。然而,这是两个规则的冲突吗?如果 A 和 B 是复制构造函数并且声明了其中一个,那么任何复制对象的尝试都不应该放到模板中,对吗?
更新:根据 N3242, 12.8.7,
“成员函数模板永远不会被实例化来执行将类对象复制到其类类型的对象。”
正确的实现应该是:
- 当 A 或 B 或两者都被移除时,不应发生断言失败。
- 如果删除了行 B,则 c 的构造应该会失败,因为 b 是 const。
- 如果这两行都被删除,编译器应该为该类生成一个复制构造函数。
- 如果两条线都存在,则由实现来警告用户。
任何意见?
c - 使用复合文字用一个值初始化数组中的所有元素
在上面的表达式中,只有第一个元素是初始化为 1。如何使用复合文字(不是 memset)初始化所有元素的值?
我在 unix 上使用 GCC 4.2 进行编译。
c++ - 同样的老故事 - VS vs GCC 4.6.1
下面的代码在 VS2010 上可以正常编译,但在 gcc 4.6.1 下编译失败:
来自 gcc 的错误:
*C:...\Calculator_engine_impl.h|20|错误:不匹配调用 '(std::string {aka std::basic_string}) (__gnu_cxx::__normal_iterator >&, __gnu_cxx::__normal_iterator >&)' |*
c - 无法弄清楚为什么此修剪功能无法正常工作
==================================================== ==============================
==================================================== ==============================
我有一个字符串:
'ABCDEF/G01'
上面的函数应该删除空格并返回给我:
'ABCDEF/G01'。
相反,我得到的是:
'ABCDEF/'
有任何想法吗?
注意:引号只是为了告诉您原始字符串中存在空格。
c++ - make_shared 创建 std::shared_ptr?海合会 4.6.2
我正在使用 gcc 4.6.2。
我正在尝试在向量 shared_ptr 中 push_back。
但是 gcc 每次都会给我一个错误。
这是我的代码:
我的 gcc 给出的错误是:
在我看来,错误说的是,std::make_shared 创建了一个 std::shared_ptr。
但在 gcc 中,shared_ptr 位于命名空间 std::tr1 中。
我该如何解决?
ios - 无法在 Xcode 4.2.1 中构建 openssl
我可以在 xcode 3.5.2 中构建 openssl,但最近我升级到了 Xcode 4.2.1。现在,当我尝试构建相同的旧 Xcode 时,我遇到了错误。
Make[1]: /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2: 没有这样的文件或目录
我可以为此提供解决方案吗?
macos - 我可以使用 Macports 的 GCC 编译通用代码吗?
由于 Apple 不支持 GCC 4.6 或 GCC 4.7,我只是切换到 MacPorts 的 GCC 4.6/4.7 版本。但是,我在“通用”架构中构建代码时遇到了问题。
传统上,我会g++ -arch i386 -arch x86_64 ...
为至少 i386/x86_64 架构编译我的二进制文件。我做了一些搜索,发现只有苹果的编译器支持 -arch 选项。所以当然它不适用于Macports'。我能做的最好的事情就是使用-m32
/-m64
选项来指定我想要的架构。但是,这只会产生 i386 或 x86_64 格式的二进制文件。我真正想要的是在两种架构(通用)中获得一个二进制文件,就像使用原始 GCC 编译器所做的那样。
这是不支持还是已知问题?我整晚都在谷歌上寻找答案,但我没有得到任何有用的东西。所以我开始怀疑我是否是唯一一个有这个问题的人,我错过了一些非常重要的事情来让它工作?如果有人能给我一些建议,真的很感激。
顺便提一句。我已经安装了gcc46 +universal
变体,但是除了为每个架构编译单独的二进制文件之外,它并没有产生任何真正通用的东西。
兴。
php - 在 Redhat 上通过 PHP 调用 gcc
我通过 exec 命令通过 PHP 调用 gcc。然后 gcc 给出奇怪的错误,例如“stddef.h 找不到”。
PHP 在用户名“oracle”下运行。也就是说,当我们通过 PHP 脚本通过“exec”调用“whoami”时,它会给出 oracle 作为用户名。
我们可以在终端上轻松调用 gcc 而不会出错。
我们可以毫无错误地调用“sudo -u oracle gcc source.c”。
所以这对我来说很奇怪。有任何想法吗???
PS:它在带有 Apache 的 Fedora 上运行良好;在 Ubuntu 和 Apache 上。
gcc - 编译编译器 GCC 时出错
我知道,编译编译器很讽刺。但是我需要这个编译器的特定版本,而 CentOS 5.x 存储库没有最新版本的 GCC。
我需要的版本是 4.3.2,但我只有 4.1.1。
我按照本教程安装了 gcc http://www.mjmwired.net/resources/mjm-fedora-gcc.html,并在配置时使用了以下参数(编译前):
/root/gcc/gcc-4.3.6/configure --prefix=/opt/gcc43 --program-suffix=43 --enable-languages=c,c++ --enable-shared --enable-threads=posix --禁用检查 --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --disable-multilib
最后一个选项--disable-multilib
为我节省了我在以前的编译尝试中遇到的另一个错误(经过长时间的编译......)
我还设置了一个环境变量,因为在以前的尝试中,我得到了错误,所以我设置如下:
确保编译器在该目录中搜索 mpfr 和 gmp 库(需要)
所以,我执行'make'命令。
我虽然一切都好,因为这次花了更多时间(在我设置该变量之前的最后一次尝试中,我花了大约 2 个小时编译)
我在 Amazon Web Services 中使用了一个 Micro 实例,这个实例只有 1 个单核 x86_64 处理器和 613 MB 的 RAM,因此编译大约需要 9 小时。
不幸的是,我又遇到了错误!!,现在我得到了这个:
有什么建议么?
gcc - 如何使 gcc 默认使用 March=native?
有没有办法更改规范文件,以便-march=native
在命令行中未指定任何内容时它会通过?
默认规格文件中的相关内容是:
我不确定规格是如何工作的。简单地指定-march=native
之前或之后%(cc1_cpu)
是行不通的。但是,这行确实生效了,因为如果我-something_wierd
把-march=native
.
我注意到的另一件事是,如果我放%{march=i386:-something_wierd}
之前%(cc1_cpu)
,gcc 报告错误所以看起来-march=i386
总是在没有指定的情况下传入,那么有没有办法区分没有指定和-march=i386
在 specs 文件中?
顺便说一句,有什么作用%>
?似乎文档中没有指定。
我正在使用 MinGW 的gcc-4.6.2
.