草庐IT

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上找到一个

构成导致不兼容的指针类型。为什么只选择双重指针?

这个问题已经解决这里.建议复制当前给出的答案并没有解决为什么首先给出的示例没有问题。主要为什么不理理由:"constint**isapointertoconstint*这与仅仅是不同的事情int*"也申请:"constint*isapointertoconstint这与仅仅是不同的事情int"我正在从不同的角度接近它,希望得到另一个解释。带有示例的代码。#includevoidf_a(intconsta){/**Can'tdo:*a=3;//error:assignmentofread-onlyparameter‘a’**Explanation:Ican'tchangethevalueofai

c++ - 为什么 operator[] 只接受一个参数?

这个问题在这里已经有了答案:C++[]arrayoperatorwithmultiplearguments?(6个答案)关闭8年前。有很多与operator[]相关的问题只接受一个参数,但我找不到一个真正说明原因的问题。例如,让matrix[0,3]调用ElementT&operator[](SizeTx,SizeTy)似乎是一种非常自然的语言扩展功能。是否有任何特殊原因(例如不兼容)导致这种语法不在语言中,或者除了缺乏动机之外还有什么其他原因实际上阻止了它被添加?(注意:这已被标记为重复,但事实并非如此。这个问题是“为什么语言中没有这种语法?”而不是“我该如何解决这个问题?”。如前所

c++ - 如何实现构造函数,使其只接受使用 typeid 的输入迭代器?

我想为某个对象实现一个范围构造函数,但我想限制它只接受两个输入迭代器。我尝试用gcc7.1.0编译这段代码。文件test.cpp#include#include#includetemplateusingtraits=typenamestd::iterator_traits::iterator_category;templateclassA{private:std::vectorv;public:template)==typeid(std::input_iterator_tag)>>A(InputIteratorfirst,InputIteratorlast):v(first,last)

c++ - 特定于线程的数据——为什么我不能只使用带有线程 ID 的静态映射?

在阅读POSIX线程时,我遇到了一个线程特定数据的示例。我确实有一个困惑的地方......线程特定的数据接口(interface)看起来有点笨拙,尤其是当你混合使用pthread_once、各种初始化程序等时。有什么理由我不能只使用静态std::map,其中键是pthread_self()id,数据值保存在std::pair的第二部分?我想不出只要它被包裹在互斥量中就无法工作的原因,但我没有看到任何关于它的建议或任何类似的东西让我感到困惑,因为它听起来比提供的API容易得多。我知道线程可能有很多catch-22,所以我想我会问一下,看看我是否要介入……一些不愉快的事情?:)

c++ - 如何在C++中只打印字符串的第一个单词

如果用户输入的信息很多,我该如何设置它只读取用户输入的第一个词?我不想使用if-else语句要求他们输入新信息,因为他们的信息太多了。我只是想让它基本上忽略第一个单词之后的所有内容,只打印输入的第一个单词。这可能吗?constintSIZEB=10;charword[SIZEB];cout"更新它必须是一个cstring。这是我正在为学校做的事情。我问了一系列问题,并在第一轮中将答案存储为cstring。然后是第二轮,我将它们存储为字符串。 最佳答案 试试这个:constintSIZEB=10;charword[SIZEB];cou

c++ - 在 OpenCV C/C++ 中只过滤掉一个轮廓

我正在尝试制作一个程序,使用基于Canny滤镜和轮廓查找功能的摄像机/网络摄像头来检测任何形状的物体。这是我的程序:intmain(intargc,char**argv){CvCapture*cam;CvMomentsmoments;CvMemStorage*storage=cvCreateMemStorage(0);CvSeq*contours=NULL;CvSeq*contours2=NULL;CvPoint2D32fcenter;inti;cam=cvCaptureFromCAM(0);if(cam==NULL){fprintf(stderr,"Cannotfindanycame

C++ builder 如何配置编译器只输出 exe?

问题是如何在c++builder2010编译器和调试选项中配置以输出一个exe文件,而所有其他文件都在其中,这样我就可以轻松地在其他机器上使用程序而无需安装它们,只需运行exe文件。 最佳答案 对于所有版本的C++Builder,您不需要为此制作安装程序(尽管如果您确实需要的话,innosetup简直太棒了)。只需选择以下项目选项:-Project/Packages:,BuildwithRuntimePackages=DISABLEDC++/链接器:动态RTL=FALSE就是这样。您将获得一个没有依赖项的单一exe(除了您使用的任何

c++ - 在 C++ 中,如何只使用带有必需参数的长选项?

在C++程序中,我希望有一个带有必需参数的“long-only”选项。下面是我使用getopt_long()的最小示例,但它不起作用:#include#include#includeusingnamespacestd;voidhelp(char**argv){cout我用这个命令编译它(gcc版本4.1.220080704RedHat4.1.2-46):g++-Walltest.cpp它告诉我:test.cpp:44:10:warning:characterconstanttoolongforitstype结果如下:$./a.out-v2--param3c=118c=0optionpa

c++ - 如何在 makefile 中只编译一个 .h 文件?

我有一个makefile为两个类(和main)创建目标文件,其中一个类只是在.h文件中定义。在我的makefile中有一行内容是FileName.o:FileName.hg++-cFileName.h但是当我尝试编译时它说找不到FileName.o我必须创建FileName.cpp才能编译吗? 最佳答案 您正在某处使用FileName.h中的类,对吗?所以至少你的.cpp文件之一应该包含#include"FileName.h",.h的代码将使用这个.cpp编译,你不需要单独编译.h的代码。