Questions tagged «c++»

C ++是一种通用编程语言。它最初被设计为C的扩展,并且具有类似的语法,但是现在它是一种完全不同的语言。使用此标记可解决有关将要使用C ++编译器编译的代码的问题。对于与特定标准修订版[C ++ 11],[C ++ 14],[C ++ 17]或[C ++ 20]等相关的问题,请使用特定于版本的标记。

4
cc1plus:错误:g ++无法识别的命令行选项“ -std = c ++ 11”
我正在尝试使用g++和编译-std=c++11或c++0x标志。 但是,我得到这个错误 cc1plus: error: unrecognized command line option "-std=c++11" g ++ --version g++ (GCC) 4.1.2 20080704 (Red Hat 4.1.2-54) Copyright (C) 2006 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

2
使用非静态数据成员的类内初始化和嵌套类构造函数时出错
以下代码非常简单,我希望它可以编译良好。 struct A { struct B { int i = 0; }; B b; A(const B& _b = B()) : b(_b) {} }; 我已经使用g ++ 4.7.2、4.8.1,clang ++ 3.2和3.3测试了此代码。除了此代码的g ++ 4.7.2 segfaults(http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57770)之外,其他经过测试的编译器给出的错误消息也没有太多解释。 g ++ 4.8.1: test.cpp: In constructor ‘constexpr A::B::B()’: test.cpp:3:12: error: constructor required before non-static data member for ‘A::B::i’ has …

3
什么导致信号“ SIGILL”?
我正在使用NDK和GCC将一些C ++代码移植到Android。该代码基本上可以运行。一方面,在Eclipse中进行调试时,调用 Dabbler::Android::Factory* pFactory = new Dabbler::Android::Factory; 导致此错误: Thread [1] (Suspended: Signal 'SIGILL' received. Description: Illegal instruction.) 1 <symbol is not available> 0x812feb44 那是什么意思?编译器是否由于某种原因生成了非法代码?我在构造函数中有一个断点(不执行任何操作),并且没有命中。我已经完成了完整的重建。 我会做错什么导致此问题?

29
测试指针的有效性(C / C ++)
有什么方法可以(当然,通过编程)确定给定的指针是否“有效”?检查NULL很容易,但是0x00001234之类的东西呢?尝试取消引用此类指针时,会发生异常/崩溃。 最好使用跨平台方法,但也可以使用特定于平台的方法(对于Windows和Linux)。 更新说明: 问题不是陈旧/已释放/未初始化的指针;相反,我正在实现一个API,该API接收来自调用者的指针(例如,指向字符串的指针,文件句柄等)。调用者可以发送(有意或无意)无效值作为指针。如何防止车祸?
90 c++  c  validation  pointers  null 

18
运算符[] []重载
是否可能[]两次重载运算符?允许的是这样的:(function[3][3]例如在二维数组中)。 如果可能的话,我想看一些示例代码。


2
是否允许这种浮点优化?
我试图检查哪里float失去了精确表示大整数的能力。所以我写了这个小片段: int main() { for (int i=0; ; i++) { if ((float)i!=i) { return i; } } } 该代码似乎适用于所有编译器,但不包括clang。Clang生成一个简单的无限循环。上帝保佑。 可以吗?如果是,那是QoI问题吗?

8
vector <bool>的替代方法
正如我们所希望的那样,它vector&lt;bool&gt;已经完全损坏了,不能被视为C数组。获得此功能的最佳方法是什么?到目前为止,我想到的想法是: 使用一个vector&lt;char&gt;代替,或 使用包装器类并具有 vector&lt;bool_wrapper&gt; 你们如何处理这个问题?我需要c_array()功能。 附带的问题是,如果我不需要该c_array()方法,如果我需要随机访问,解决该问题的最佳方法是什么?我应该使用双端队列还是其他方法? 编辑: 我确实需要动态调整大小。 对于那些不知道的人,vector&lt;bool&gt;是专门的,因此每个人bool需要1位。因此,您不能将其转换为C样式的数组。 我猜“包装器”有点用词不当。我在想这样的事情: 当然,my_bool由于可能的对齐问题,我不得不读一读:( struct my_bool { bool the_bool; }; vector&lt;my_bool&gt; haha_i_tricked_you;
90 c++  stl  vector  boolean 





4
从C ++代码调用C函数
我有一个想从C ++调用的C函数。我无法使用“ extern "C" void foo()”这样的方法,因为C函数无法使用g ++进行编译。但是使用gcc可以很好地编译。有什么想法如何从C ++调用函数吗?
90 c++  c  linux  extern-c 

5
静态链接libstdc ++:有陷阱吗?
我需要将基于GCC 4.7的libstdc ++的,在Ubuntu 12.10上构建的C ++应用程序部署到运行Ubuntu 10.04的系统,该系统随附相当老的libstdc ++版本。 目前,我正在-static-libstdc++ -static-libgcc按照此博客文章的建议进行编译:静态链接libstdc ++。作者警告不要在静态编译libstdc ++时使用任何动态加载的C ++代码,这是我尚未检查的事情。尽管如此,到目前为止一切似乎都进展顺利:我可以在Ubuntu 10.04上使用C ++ 11功能。 我注意到这篇文章是从2005年开始的,此后也许已经发生了很大的变化。它的建议仍然有效吗?有没有我应该注意的潜伏问题?

6
C ++中向量的初始容量
什么是capacity()的std::vector这是使用默认constuctor产生的?我知道那size()是零。我们可以声明默认构造的向量不调用堆内存分配吗? 这样,就有可能使用单个分配来创建具有任意保留的数组std::vector&lt;int&gt; iv; iv.reserve(2345);。假设由于某种原因,我不想size()在2345上启动。 例如,在Linux(g ++ 4.4.5,内核2.6.32 amd64)上 #include &lt;iostream&gt; #include &lt;vector&gt; int main() { using namespace std; cout &lt;&lt; vector&lt;int&gt;().capacity() &lt;&lt; "," &lt;&lt; vector&lt;int&gt;(10).capacity() &lt;&lt; endl; return 0; } 印刷0,10。这是规则,还是STL供应商相关?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.