草庐IT

标准ACL

全部标签

c++ - 我怎样才能用 GNU g++ 只编译标准 C++?

GNUg++编译器中有一些扩展,例如VLA(可变长度数组),即使这些功能不是C++标准。因此,如果我需要仅使用C++标准构造来编译程序并避免那些额外的扩展,我可以使用GNUg++来完成吗?像g++test.cpp-std=onlyStandards这样的东西? 最佳答案 传递-pedantic-errors标志。请务必使用-std=设置标准,例如-std=c++14。这也适用于clang。 关于c++-我怎样才能用GNUg++只编译标准C++?,我们在StackOverflow上找到一个

c++ - 如何在 Visual Studio 2015 中显示标准输出?

我见过的大多数IDE(NetBeans、QtCreator、XCode、CodeBlocks、Eclipse)都提供了一种开箱即用的方法,可以在其嵌入式窗口或外部控制台或日志中查看标准输出,但可视化工作室。我真的不想像THIS中建议的那样分配一个单独的控制台题。我也不希望按照THIS中的建议将其重定向到文件问题(输出文件不是使用建议的控制台命令(2>output.txt)创建的)。请不要给出修改代码库的答案,例如使用OutputDebugString。如果无法以这种方式在VS中显示标准输出,仍然欢迎使用其他两种替代方案的工作解决方案,即使用外部控制台(我尝试使用但没有看到其中的输出)或

c++ - C++ 中的数据对齐、标准和可移植性

我想通过使用::operatornew(size_t)和位置new构造一个类T的对象。为了“扩展”charv[1]的大小,它是T中最后声明的数据成员,我分配了sizeof(T)+n-1字节与operatornew(),其中n是以字节为单位的所需大小。这个技巧允许我访问[0,n-1]中的任何i的v[i]。我的问题是关于C++标准的:T中数据成员的声明顺序是否反射(reflect)了数据在内存中的表示顺序?如果保留了顺序,那么无论分配的内存大小有多大,数据成员的对齐方式是否也会保留? 最佳答案 1)是的。在指针比较部分,标准规定指向后面

c++ - MacPorts Clang 3.1 缺少标准库安装?

我正在尝试使用MacPorts安装的clang在C++11中初始化列表功能。编译这段简单的代码时:#includeintmain(){std::vectora{1,3,5};return0;}我遇到了这个错误:stephen-chus-mac-pro:~stephenchu$clang-std=c++0x-ctext.cxx-I/opt/local/include-vclangversion3.1(trunk154872)Target:x86_64-apple-darwin10.8.0Threadmodel:posix"/opt/local/libexec/llvm-3.1/bin/c

c++ - 蒙特卡洛 C++ 中标准偏差的通用函数

我应该在一些蒙特卡洛模拟中计算标准偏差函数。公式是这样的:我认为我的结果与应有的结果相去甚远。我的函数使用来自boost库的元组,它看起来像这样:doubleadd_square(doubleprev_sum,doublenew_val){returnprev_sum+new_val*new_val;}templatedoublevec_add_squares(constV&v){returnstd::accumulate(v.begin(),v.end(),0.0,add_square);}templateboost::tupleget_std_dev_and_error(const

c++ - 标准容器元素的常量正确性

以下是错误的:vectorvec;问题是模板类型需要是可分配的。以下代码编译[编辑:在VisualStudio2010中],演示了上述问题:vectorvec;vec.push_back(6);vec[0]+=4;对于更复杂的类型,这可能是一个严重的问题。我的第一个问题是这种行为是否有原因。在我看来,有可能制作出不允许上述内容的const容器和允许它的非const容器。其次,有没有办法让容器以这种方式运行?第三,这里实际发生了什么(用户类型)?我意识到这是未定义的行为,但STL是如何编译它的? 最佳答案 原因std::vector不

c++ - Win32 更改为二进制模式子标准输出(管道)

你好这个伟大的社区,当使用管道重定向子项时,('\n')0x0A到('\n\r')0x0D0x0A的自动转换出现问题stdout到一个文件,child的输出是字节而不是文本。首先,我使用了这些例子MSDN-CreatingaChildProcesswithRedirectedInputandOutput和http://support.microsoft.com/kb/190351),现在我有了这个基本应用程序,它创建了一个管道并将child的STDOUT重定向到一个二进制文件。所有这些都在VisualC++6.0中的Win32控制台应用程序中(是的,它很旧,但是是必需的)。#defin

c++ - 试图理解 C++ 标准中的 [class.qual]/2

根据我得到的答案here,尽管clang和vs2015接受它,但下面的代码格式错误。#includeclassA{public:A(){std::cout尽管如此,下面的代码似乎适用于所有3个编译器(参见liveexample)。AFAICT,根据[class.qual/2]代码格式错误。或者我在这里遗漏了什么?#includestructB{B(){std::cout此外,根据[class.qual]/2,下面的代码格式正确,在这种情况下,所有3个编译器都会产生预期的输出(参见示例here)。includestructB{B(){std::cout输出:B()A()B()但我想知道u

c++ getline 似乎无法识别通过管道传输到标准输入的输入中的换行符

这段代码:$猫垃圾.cpp#include#include#include#includeusingnamespacestd;intmain(intargc,char**argv){stringline;while(getline(cin,line)){cout如果我运行它就可以正常工作,然后输入“hi”和“there”$垃圾你好你好那里那里到目前为止一切顺利。但是我有另一个程序:$猫junk1.c#includeintmain(intargc,char**argv){inti=4;while(i--){printf("abc\n");sleep(1);}return0;}这个输出4行

c++ - 为什么C++标准要为std::bitset::reference指定一个析构函数?

我想知道为什么std::bitset::reference和std::vector::reference指定一个显式析构函数(不是编译器生成的析构函数)。因为,例如,boost::dynamic_bitset::reference似乎没有指定这样的析构函数。 最佳答案 只是因为标准提到了~reference()作为析构函数,并不意味着它必须作为空操作由用户提供{}(这就是libstdc++和SGI/STL的做法)。它也可以由用户声明为=default,甚至是隐式定义(libc++就是这样做的)。无论如何,可以更新标准以删除对析构函数