草庐IT

C++标准

全部标签

c++ - 我们可以在 Unix 编译器中使用 wmain() 还是它只能在 Windows 上运行?

我们可以在Unix编译器上使用wmain()函数吗?还是它只能在Windows上工作? 最佳答案 main的唯一标准签名是:intmain(void);intmain(intargc,char*argv[]);但是,独立的实现可以提供扩展/允许其他签名。但这些并不能保证是便携的。wmain看起来像Windows/VS的东西。这在*nix/GNUGCC上工作的机会不大。 关于c++-我们可以在Unix编译器中使用wmain()还是它只能在Windows上运行?,我们在StackOverfl

c++ - 在 C/C++ 中,是否保证 volatile 变量在线程之间具有最终一致的语义?

是否有任何普遍遵循的标准(ISOC或C++,或任何POSIX/SUS规范)一个变量(也许标记为volatile),不受互斥量保护,正在被访问由多个线程将变得最终一致,如果它是分配给?举个具体的例子,考虑两个线程共享一个变量v,初始值为零。线程1:v=1线程2:同时(v==0)产量();是否保证线程2最终会终止?或者可以吗可以想象永远旋转,因为缓存一致性永远不会启动并使分配在线程2的缓存中可见?我知道C和C++标准(在C++0x之前)不在所有关于线程或并发。但我很好奇C++0x是否内存模型或pthreads或其他任何东西都可以保证这一点。(显然,这确实适用于32位x86的Windows;

c++ - C负数组索引

这是我的结构:structNode{structNode*data;structNode*links[4];}假设没有填充,Node->links[-1]是否保证指向Node::data? 最佳答案 无保证;这是未定义的行为:依赖于编译器的结构填充标准只定义了0到长度(含)之间的数组索引可能违反严格别名在实践中,您很可能最终会指向data,但任何访问它的尝试都会导致UB。 关于c++-C负数组索引,我们在StackOverflow上找到一个类似的问题: htt

c++ - C++ 标准库是 C++ 语言的一部分吗?

C++标准库是C++语言的一部分吗?(注意“语言”,而不是“标准”;当然,两者都是标准的一部分)。如果是,为什么?如果不是,为什么不呢?这个问题的答案在C++98、C++03和C++0x中可能不同。这不是主观的,因为它可以从相关标准文件中的措辞/要求中推断出来。 最佳答案 是的,在当前标准(C++03)和即将到来的新标准(C++0x,终于到了最终草案阶段,所以现在应该不会太长)中,库函数是规范的一部分(至少对于托管实现而言)。即使是独立的实现也需要一个标准库,尽管它要简单得多。在C++03中,第17章到第27章涉及标准库。在C++0

c++ - 在 C++ 中获取均匀分布的随机整数的标准方法是什么?

有没有函数可以获取指定范围内均匀分布的伪随机整数?我可以使用rand编写自己的函数,但这似乎是一种很常见的情况,STL中可能有适合它的东西。 最佳答案 Boost提供了许多随机数生成工具。对于统一分布,你有这个:http://www.boost.org/doc/libs/1_49_0/doc/html/boost/random/uniform_real_distribution.html编辑:更新为包含新的C++11实现。对于整数的情况,这里有引用:http://en.cppreference.com/w/cpp/numeric/r

c++ - 您如何编写(可移植的)反向网络字节顺序?

背景在设计二进制文件格式时,一般建议按照网络字节序写入整数。为此,有像htonhl()这样的宏。但是对于WAV这样的格式,实际上使用的是littleendian格式。问题无论代码运行的CPU是大端架构还是小端架构,您如何可移植地写入小端值?(想法:标准宏ntohl()和htonl()以某种方式“反向”使用?或者如果代码在小端或大端CPU上运行并选择适当的代码路径,代码是否应该只测试运行时?)所以问题实际上与文件格式无关,文件格式只是一个例子。它可以是需要“在线”小端字节序的任何类型的序列化,例如(异端)网络协议(protocol)。 最佳答案

c++ - 是否有用于拆分 std::pair 的标准 C++ 函数对象?

有谁知道是否存在用于访问std::pair元素的实际标准(即TR1或Boost)C++函数对象?在过去的24小时内,我曾两次希望我有类似keys函数的Perl散列函数。例如,最好在std::map对象上运行std::transform并将所有键(或值)转储到另一个容器。我当然可以编写这样一个函数对象,但我更愿意重用那些吸引了很多眼球的东西。 最佳答案 boost::bind就是您要找的东西。boost::bind(&std::pair::second,_1);//returnsthevalueofapair例子:typedefstd

c++ - 为什么 std::accumulate 对于标准数组会有这样的行为?

我刚接触C++,我想我已经掌握了指针,但是std::accumulate()让我感到困惑。给定数组:inta[3]={5,6,7};我想用std::accumulate()对数组的值求和,所以我向它传递了一个指向第一个元素的指针,然后是最后一个元素,然后是蓄能器。std::accumulate(a,a+2,0);std::accumulate(&a[0],&a[2],0);糟糕:其中任何一个只返回前两个元素的总和:11。另一方面,如果第二个参数是一个无意义的指针,就超出了范围......std::accumulate(a,a+3,0);std::accumulate(&a[0],&a[

c++ - C 和 C++ 之间的主要区别是什么?您什么时候会选择一个而不是另一个?

对于那些对两者都有经验的人来说,主要区别是什么?对于两者的新手,学习哪个更好?在某些情况下您可能会选择C,但在其他情况下您会选择C++?是使用最适合工作的工具还是一个明显优于另一个的情况。我知道C++是C的“增强”,但它是在83年创建的,并没有完全取代C,所以它一定有更多的东西。我知道这个问题是主观的,我不是要挑起任何宗教war,所以请尽量客观。明确的优缺点和比较。 最佳答案 虽然C是一种纯过程语言,但C++是一种多范式语言。支持通用编程:允许编写一次代码,并将其用于不同的数据结构。元编程:允许利用模板在编译时生成高效代码。检查:允

c++ - Eclipse 是否有任何增强的 gdb 控制台?

目前Eclipse的gdb控制台只是连接javagui和底层gdb进程之间的标准输入/标准输出,因此缺少许多gdbshell功能,例如制表符自动完成、命令历史记录等。我想知道是否有用于快速gdb交互的增强型控制台。我真的很喜欢经常使用的gdb命令,如“print”和“call”等。恕我直言,“print”命令有时比Eclipse的“Expressionwatcher”更高级,因为它只执行一次,以后会随时评估并崩溃-易于。如果您认为没有必要使用gdb控制台,那么您在gdbUI到eclipseUI传输方面的最佳实践是什么。 最佳答案 除