草庐IT

C++标准

全部标签

c++ - 如何在编译期间避免标准包含文件

我正在尝试使用我自己的printf函数,所以我不想包含标准包含文件...所以我正在使用-nostdinc编译我的代码我创建的程序是这样的:externintprintf(constchar*,...);printf("Value:%d",1234);//printf("\n");这段代码工作正常,但是当我使用printf("\n")时,它显示undefinedreferenceto'putchar'。如果我评论printf("\n");然后显示nm命令$nmtest1.oUexit00000000TmainUprintf00000030T_start但是如果我使用printf("\n"

c++ - 在标准的无序容器中实现了什么哈希方法?

关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭7年前。Improvethisquestion由于语言标准很少规定实现方法,我想知道C++标准库实现(libc++、libstdc++和dinkumware)使用的真实世界哈希方法是什么。如果不清楚,我希望答案是这样的方法:散列与链接除法/乘法散列通用哈希完美散列(静态、动态)使用开放寻址进行散列(线性/二次探测或双重散列)罗宾汉哈希法布隆过滤器布谷鸟哈希知道为什么选择一种特定方法而不是其他方法也是一件好事。

c++ - OpenMP 4 对齐选项?

我对OpenMP中新的对齐选项有疑问。这是在与#pragmaompsimdaligned(a:n)一起使用的上下文中假设我有一个整数数组,我使用posix_memalign分配了它,所以我知道该数组从32字节边界开始。现在假设我想对该数组中的每个值求平方。我能说...int*array={somearrayoflengthlenalignedto32bytes};#pragmaompsimdaligned(array:32)for(inti=0;i这是一个可靠的假设吗?或者对齐是否也意味着我在数组中使用的大小数据类型(int)是32字节的倍数?有点像gcc中的属性((aligned(3

哪些硬件特定定义了C89标准需要提供实现?

C(89)标准是否指定实现必须定义的某些硬件属性?例如,在我的Linux系统上有一个定义__WORDSIZE(定义为64)-我可以期待吗__WORDSIZE在符合C(89)的每个系统上定义?C标准还需要提供其他硬件的值吗?看答案C89指定了由limits.h,请参阅此处以获取可自由访问的草稿文字.已经评论阿尔由Alk回答,唯一真正的特定于硬件是CHAR_BIT,其他是特定于实施的。至于__WORDSIZE,这不是标准定义,这是值得怀疑的单词大小应该。您可以随时使用巧妙的宏来确定类型中的位数在这个答案中,在这里引用:/*Numberofbitsininttype_MAX,orinany(1这样,

c++ - 如何理解独立 C 或 C++ 实现中的原子?

关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭6年前。ImprovethisquestionC11和C++11根据执行线程定义原子。虽然在托管环境中线程是什么很清楚,但在独立语言实现中它是一个相当模糊的术语。如何在所有线程都必须在程序内部实现的独立实现中正式理解C11和C++11中指定的原子?例如:ISR是一个单独的执行线程吗?为什么标准委员会根据线程而不是简单地在代码排序领域定义原子?除了gcc之外,是否有任何嵌入式编译器已经支持C11/C++11原子?

c++ - 打包和指针别名,C 和 C++

unionvec{#pragmapack(push,1)struct{floatx,y,z;}#pragmapack(pop)floatvals[3];};考虑上面的定义。(除了C99中的匿名union)我想这个答案可能允许不同的答案,具体取决于编译器的选择、语言的选择和标准的选择。我相信我可以保证(通过#pragma编译器文档,而不是语言保证)sizeof(vec)==3*sizeof(float)因此,我相信我可以保证&vec.x==&vec.vals[0]等。但是,我不确定从v.x写入然后从v.vals[0]读取是否合法(也就是说,不允许通过严格的别名)>撇开包装不谈,我相信相关

c++ - 将不可复制的对象放入标准容器中

这个类是否设计了标准的C++0x方法来防止copy和assign,以保护客户端代码免受data的意外双重删除??structDataHolder{int*data;//dangerousresourceDataHolder(constchar*fn);//loadfromfileorsoDataHolder(constchar*fn,size_tlen);//*fromanswers:added*~DataHolder(){delete[]data;}//preventcopy,topreventdouble-deletionDataHolder(constDataHolder&)=d

c++ - 标准头文件中的错误

我目前遇到以下错误:c:\programfiles\microsoftvisualstudio\vc98\include\iomanip(15):errorC2059:>syntaxerror:'namespace'c:\programfiles\microsoftvisualstudio\vc98\include\iomanip(15):errorC2334:>unexpectedtoken(s)preceding'{';skippingapparentfunctionbodyc:\programfiles\microsoftvisualstudio\vc98\include\mat

c++ - 为什么整数到字符串的转换直到现在才明确包含在 C++ 中?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭9年前。Improvethisquestion我在学习C++时遇到的第一个问题是itoa函数在某些编译器上受支持,但实际上并没有在ANSI-C标准中定义(因此通常被认为是不好的做法使用)。我见过很多解决方案,比如使用stringstream或者snprintf,总觉得很迂回,终于在C++11中有了std::to_string从语言的角度来看感觉更清晰。但为什么要花这么长时间才能添加更直接的方法?除了一些关于效率的讨论和没有充分理由就不

c++ - 如何从另一个程序运行一个程序并通过 C 或 C++ 中的标准输入将数据传递给它?

假设我有一个.exe,让我们说sum.exe。现在假设sum.exe的代码是voidmain(){inta,b;scanf("%d%d",&a,&b);printf("%d",a+b);}我想知道如何从另一个c/c++程序运行这个程序并通过stdin传递输入,就像他们在像ideone这样的在线编译器站点中所做的那样,我在其中输入代码并在文本框中提供stdin数据和该数据被程序使用scanf或cin接受。另外,我想知道是否有任何方法可以从启动它的原始程序中读取该程序的输出。 最佳答案 在名称以X结尾的平台(即非Windows)上的C中