Questions tagged «c++»

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

9
使用新的标准版本的C ++中是否有过无声的行为更改?
(我正在寻找一个或两个例子来证明这一点,而不是清单。) 是否曾经发生过C ++标准的更改(例如从98变为11、11到14等)以无声的方式改变了现有的,格式正确的,定义了行为的用户代码的行为?即在使用较新的标准版本进行编译时没有警告或错误? 笔记: 我问的是标准规定的行为,而不是实现者/编译器作者的选择。 编写的代码越少越好(作为对此问题的答案)。 我并不是说带有版本检测功能的代码,例如#if __cplusplus >= 201103L。 涉及内存模型的答案很好。

3
C ++ 14是否在C ++中添加了新关键字?
C ++标准委员会倾向于回避向该语言添加新的关键字,但是对于C ++ 11而言并非如此。一些例子: constexpr decltype thread_local auto // New usage noexcept nullptr static_assert alignof alignas C ++ 14引入了新的关键字吗?
103 c++  c++11  keyword  c++14 

13
确定数字是十的倍数还是在一组特定范围内
我的程序中有一些循环。我可以写出伪代码,但我不确定如何逻辑地编写它们。 我需要 - if (num is a multiple of 10) { do this } if (num is within 11-20, 31-40, 51-60, 71-80, 91-100) { do this } else { do this } //this part is for 1-10, 21-30, 41-50, 61-70, 81-90 这对于蛇和梯子棋盘游戏来说,如果对我的问题更有意义。 我想我需要使用模数的第一个if语句会if (num == 100%10)正确吗? 第二个我不知道。我可以这样写出来,if (num > 10 …

4
shared_ptr在哪里?
几个小时后试图找到shared_ptr的位置后,我现在感到非常沮丧。我看到的所有示例都没有显示完整的代码来包含shared_ptr(和正在运行的)标题。简单的声明std,tr1并<memory>在一切都没有帮助!我已经下载了增强功能,但仍然没有显示!有人可以告诉我在哪里可以找到我吗? 感谢您让我发泄挫败感! 编辑:我看到我的标题已更改。对于那个很抱歉。所以...这也是因为我不清楚shared_ptr是否“依赖C ++版本”->这就是为什么我没有声明我的环境->因此可能为什么我很难找到它。 我正在使用MSVS2008。 编辑2:我不知道为什么,但是当我到处寻找shared_ptr时,我包括了[memory]和[boost / tr1 / memory.hpp]和[boost / tr1 / tr1 / memory]。没错 感谢您的所有回复。


2
编译器在错误时显示“ pi”符号
我在Coliru上测试了一些代码,但得到了奇怪的输出。我记下了代码,可以用以下简单的代码重现它: int main() { π } 在g ++上的输出: 铛: 例如,仅使用pi(不指定地址)显示预期结果: main.cpp:3:5: error: 'pi' was not declared in this scope pi; ^ 我尝试使用g ++ 4.9.2和其他站点在我的机器上重现此错误,但我无法。 这是此站点上的某些错误,还是这些编译器的某些配置? 为什么只使用地址运算符(&)来显示此符号?
103 c++  coliru 

4
为什么每个人都对标准C类型进行定义?
如果要使用Qt,则必须拥抱quint8,quint16依此类推。 如果要使用GLib,则必须欢迎guint8,guint16依此类推。 在Linux上有u32,s16依此类推。 uC / OS定义SINT32,UINT16依此类推。 而且,如果您必须结合使用这些东西,则最好为遇到麻烦做好准备。由于你的机器u32将被typedefD,共long并且quint32将typedef维超int,编译器会抱怨。 如果有的话,为什么每个人都这样做<stdint.h>?这是图书馆的某种传统吗?
103 c++  c  stdint 

5
保证C ++中的临时生存期?
C ++是否为在函数调用中创建但未用作参数的临时变量的寿命提供保证?这是一个示例类: class StringBuffer { public: StringBuffer(std::string & str) : m_str(str) { m_buffer.push_back(0); } ~StringBuffer() { m_str = &m_buffer[0]; } char * Size(int maxlength) { m_buffer.resize(maxlength + 1, 0); return &m_buffer[0]; } private: std::string & m_str; std::vector<char> m_buffer; }; 这是您将如何使用它: // this is from a crusty old API that can't …
103 c++ 

6
__gxx_personality_v0的作用是什么?
这是一个来自OS开发站点的二手问题,但是由于我在任何地方都找不到合适的解释,这使我感到好奇。 使用gcc编译和链接独立的C ++程序时,有时会发生如下链接错误: out/kernel.o:(.eh_frame+0x11): undefined reference to `__gxx_personality_v0' 这显然是因为该符号是在libstdc ++中定义的,而在独立环境中则缺少该符号。解决问题仅需在以下位置定义此符号: void *__gxx_personality_v0; 哪个很好,但是我不喜欢魔术般工作的东西...所以问题是,这个符号的目的是什么?
103 c++  gcc  linker  kernel 

12
为什么C字符文字是整型而不是char?
在C ++中,sizeof('a') == sizeof(char) == 1。这是直观的意义,因为'a'它是字符文字,并且sizeof(char) == 1由标准定义。 但是在C中,sizeof('a') == sizeof(int)。即,看来C字符文字实际上是整数。有人知道为什么吗?我可以找到很多关于此C怪癖的提及,但没有解释为什么它存在。
103 c++  c  char  sizeof 

10
为什么std :: set没有“包含”成员函数?
我使用率很高std::set<int>,通常只需要检查这样的集合是否包含数字即可。 我觉得写自然: if (myset.contains(number)) ... 但是由于缺少contains成员,我需要编写繁琐的代码: if (myset.find(number) != myset.end()) .. 还是不太明显: if (myset.count(element) > 0) .. 这个设计决定有理由吗?
103 c++  stl  stdset 

2
boost :: flat_map及其与map和unordered_map相比的性能
编程中的常识是,由于缓存命中,内存局部性可以大大提高性能。我最近发现了boost::flat_map哪个是基于矢量的地图实现。它似乎不像您典型的map/ 那样流行,unordered_map因此我无法找到任何性能比较。它如何比较?最佳的用例是什么? 谢谢!
103 c++  boost  map 

7
C / C ++宏中的逗号
说我们有一个这样的宏 #define FOO(type,name) type name 我们可以使用像 FOO(int, int_var); 但并非总是那么简单: FOO(std::map<int, int>, map_var); // error: macro "FOO" passed 3 arguments, but takes just 2 我们当然可以: typedef std::map<int, int> map_int_int_t; FOO(map_int_int_t, map_var); // OK 这不是很符合人体工程学。加上类型不兼容必须加以处理。任何想法如何解决宏?
103 c++  c  macros  c-preprocessor 

8
C ++获取整数除法和余数的最佳方法
我只是想知道,如果我想将a除以b,并且对结果c和余数都感兴趣(例如,说我有秒数,并且想要将其分为分钟和几秒),那么什么是最好的方法去吧? 可不可能是 int c = (int)a / b; int d = a % b; 要么 int c = (int)a / b; int d = a - b * c; 要么 double tmp = a / b; int c = (int)tmp; int d = (int)(0.5+(tmp-c)*b); 要么 也许有一个神奇的功能可以一次给出两者?
103 c++  division 

2
什么是SDL渲染器?
我从SDL2开始,尝试理解SDL_Renderer是什么时遇到了一些麻烦。 它是什么?它有什么作用?SDL_Renderer,SDL_Window,SDL_Surface和SDL_Texture有什么区别以及它们之间的关系? 在尝试理解此入门代码时,我遇到了问题: #include <iostream> #include <SDL2/SDL.h> int main() { /* Starting SDL */ if (SDL_Init(SDL_INIT_EVERYTHING) != 0) { std::cout << "SDL_Init Error: " << SDL_GetError() << std::endl; return 1; } /* Create a Window */ SDL_Window *window = SDL_CreateWindow("Hello World!", 100, 100, 640, 480, SDL_WINDOW_SHOWN); if (window == nullptr) …
103 c++  sdl  terminology  sdl-2 

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.