g++相关内容

如何制作可变参数宏(可变数量的参数)

我想用 C 写一个宏,它可以接受任意数量的参数,而不是一个特定的数字 示例: #define macro( X ) something_complicated(whatever( X ) ) 其中 X 是任意数量的参数 我需要这个,因为 whatever 被重载并且可以用 2 或 4 个参数调用. 我尝试定义了两次宏,但第二个定义覆盖了第一个! 我正在使用的编译器是 g ..
发布时间:2021-12-02 08:07:45 其他开发

g++ (mingw) 说 to_string 不是 std 的成员

我正在制作一个小词汇记忆程序,其中单词会随机闪现给我以获取含义.我想使用 Bjarne Stroustroup 告诉我们的标准 C++ 库,但我一开始就遇到了一个看似奇怪的问题. 我想将 long 整数更改为 std::string 以便能够将其存储在文件中.我已经使用 to_string() 做同样的事情.问题是,当我用 g++(版本 4.7.0,如其 --‍version 标志中提到的) ..
发布时间:2021-12-01 15:35:38 C/C++开发

std::enable_if 有条件地编译成员函数

我试图通过一个简单的例子来理解如何使用 std::enable_if.在我阅读了这个答案后,我认为应该不会太难举一个简单的例子.我想使用 std::enable_if 在两个成员函数之间进行选择,并且只允许使用其中一个. 不幸的是,以下内容不能用 gcc 4.7 编译,经过数小时和数小时的尝试,我问你们我的错误是什么. #include #include 模板Y类{民众:模板 gcc 报 ..
发布时间:2021-12-01 15:28:50 C/C++开发

usr/bin/ld: 找不到 -l

我正在尝试编译我的程序,但它返回此错误: usr/bin/ld: 找不到 -l 在我的 makefile 中,我使用命令 g++ 并链接到我的库,这是指向位于其他目录中的库的符号链接. 请问有没有可以添加的选项以使其正常工作? 解决方案 如果您的库名称是 libxyz.so 并且它位于路径上,请说: /home/user/myDir 然后将其链接到您的程序: g++ -L/ ..
发布时间:2021-12-01 15:28:24 服务器开发

g++ 和 gcc 有什么区别?

g++ 和 gcc 有什么区别?一般的c++开发应该使用其中的哪一个? 解决方案 gcc 和 g++ 是 GNU Compiler Collection 的编译器驱动程序(曾几何时只是 GNU C 编译器). 即使它们会根据文件类型自动确定要调用的后端 (cc1 cc1plus ...),除非被 -x 语言覆盖,它们有一些区别. 它们的默认值可能最重要的区别是它们自动链接到哪些 ..
发布时间:2021-12-01 15:09:31 C/C++开发

使用自定义类类型作为键的 C++ unordered_map

我正在尝试使用自定义类作为 unordered_map 的键,如下所示: #include #include #include 使用命名空间标准;类节点;类解决方案;类节点{民众:一个;国际b;国际 c;节点(){}节点(向量 v){排序(v.begin(),v.end());a = v[0];b = v[1];c = v[2];}布尔运算符==(节点 i){if ( i.a==this->a ..
发布时间:2021-12-01 15:06:29 C/C++开发

为什么在不返回值的情况下从非空函数的末尾流出不会产生编译器错误?

自从我多年前意识到默认情况下这不会产生错误(至少在 GCC 中),我一直想知道为什么? 我知道你可以发出编译器标志来产生警告,但它不应该总是一个错误吗?为什么非 void 函数不返回有效值是有意义的? 评论中要求的示例: #include 整数字符串大小(){}int main(){字符字符串[5];printf("最后一个字符是:%c\n", cstring[stringSize( ..
发布时间:2021-12-01 14:57:50 C/C++开发

GNU C++ 中的原子交换

我想验证我的理解是否正确.这种事情很棘手,所以我几乎可以肯定我错过了一些东西.我有一个由实时线程和非实时线程组成的程序.我希望非 RT 线程能够交换指向 RT 线程使用的内存的指针. 从文档中,我的理解是这可以在 g++ 中使用: //全局数据 *rt_data;数据*swap_data(数据*new_data){#ifdef __GNUC__//原子指针交换.数据 *old_d = __ ..
发布时间:2021-11-30 14:56:44 C/C++开发

为什么 -ansi 和 -std=c++11 在 g++ 中发生冲突?

为什么 -ansi 和 -std=c++11 不能一起工作?(ANSI 根据其他答案恢复为 C++98)我正在使用 g++-4.8. 这里是 C++11 的 ANSI 批准: http://webstore.ansi.org/RecordDetail.aspx?sku=INCITS%2fISO%2fIEC+14882-2012 这让我很困惑.谢谢! 解决方案 RTFM: ..
发布时间:2021-11-28 17:50:07 其他开发

为什么我的新操作员不叫

我想看到一个动态加载的库(用 dlopen 等加载)真的使用它自己的 new 和 delete 操作符,而不是调用程序中定义的这些操作符.于是我写了下面的library.cpp #include #include #include #include #include "base.hpp"void* operator new(size_t size) {std::printf("新的库调 ..
发布时间:2021-11-27 08:11:58 C/C++开发

如何编写带有中间参数的 PowerShell 别名?

我正在尝试设置 Windows PowerShell 别名以使用某些参数运行 MinGW 的 g++ 可执行文件.但是,这些参数需要跟在文件名和其他参数之后.我不想经历尝试设置功能和所有这些的麻烦.有没有办法简单地说: alias mybuild="g++ {args} -lib1 -lib2 ..." 或类似的东西?我对 PowerShell 并不十分熟悉,而且我很难找到解决方案.有人吗? ..
发布时间:2021-11-26 23:57:17 其他开发

如何使用带有代码块的 G++ 为 64 位编译?

我目前正在创建一个共享的 lib DLL,但我需要在 64 位环境中在运行时加载它,所以它目前不起作用. 如何使用 g++ 从代码块编译 64 位 dll? 我尝试过像 -m64 这样的编译器选项,但似乎都不起作用. 解决方案 要在 windows 上使用 g++ 编译 64 位程序,您需要 MinGW64.我相信 Code::Blocks 带有 MinGW32. 要将其 ..
发布时间:2021-11-26 14:59:59 C/C++开发

macosx-version-min 是什么意思?

当我传递编译器标志 -mmacosx-version-min=10.5 时,它是什么意思?我认为这意味着结果二进制是 x86,而不是 ppc,但它是 32 位还是 64 位?我在雪豹上编译,所以默认输出二进制是 64 位.我没有通过 -universal,我认为它不是 32 位-64 位通用二进制文件. 解决方案 此选项将由放置在标题中的各种可用性宏使用.这意味着您可能需要最低版本的操作系 ..
发布时间:2021-11-26 14:45:10 其他开发

在 64 位 mac 上编译 OpenCV 代码

我最近继承了一些 OpenCV 代码.我在我的 mac 上安装了 openCV,内置在 XCode 中,然后编译并成功运行了我的第一个 openCV“hello world"-ish 程序. 现在我正在尝试运行给定的代码,但出现错误,让我相信这是原始代码在 32 位 Windows 系统上运行而我在 64 位 Mac 上运行的问题. 当我通过输入“make"运行 Makefile 时 ..
发布时间:2021-11-26 14:42:20 C/C++开发

如何在(64 位)Windows 上编译 C++ 以生成 64 位 exe?

使用 code::blocks 附带的 g++ 编译器,我可以编译 32 位程序,但是当我尝试编译为 64 位程序时,它告诉我未实现 64 位,即使我有 64 位操作系统. 我如何编译 C++ 来制作一个 64 位的 exe? 解决方案 下载 Microsoft Visual C++,并将目标设置为 64 位. 为什么要让编程变得比它需要的更难? ..
发布时间:2021-11-25 07:30:44 C#

如何在 64 位机器上将 C++ 程序编译为 64 位?

也许是一个非常微不足道的问题: 我需要将程序编译为 64 位(之前编写的 makefile 将其编译为 32 位). 我看到选项 -m32 出现在每个文件编译的命令行参数中.所以,我修改了 makefile 以去掉 OPTFLAG 中的 -m32 ,但是当程序编译时,我仍然看到 -m32 出现并且二进制文件仍然是 32 位的.这个 m32 也来自其他地方吗? 解决方案 -m32 ..
发布时间:2021-11-25 06:22:11 C#

使用 MinGW (Dev-C++) 编译 64 位二进制文​​件

这可能是一个愚蠢的问题,但我从大约 3 小时开始寻找答案. ¿如何使用 (Dev-C++) MinGW 编译 64 位二进制文​​件? 我已阅读 MinGW 默认支持 64 位,但我无法激活此选项. 我尝试过“-m64",但它说:“抱歉,未实现:64 位模式未编译" 我正在 Windows-7 上开发 Dev-C++ 我知道如何在 MSVC++ 上执行此操作,但我不想 ..
发布时间:2021-11-25 05:52:40 C#

对 %esp 的修改导致 SIGSEGV

有时我会在参加编码比赛时使用以下代码来避免堆栈溢出. int main(){静态常量 int _STACK_SIZE = MAXN*10;静态 int _STACK[_STACK_SIZE*2], _ESP;__asm__ __volatile__("movl %%esp, %0\n""movl %1, %%esp\n":"=g"(_ESP):“g"(_STACK + _STACK_SIZE): ..
发布时间:2021-11-25 05:39:05 C#