草庐IT

c++ - 为什么我们需要在编译期间包含 C 或 CPP 声明文件而不是像 iostream 这样的默认库?

如果C或CPP程序需要使用我们自己的带有声明的头文件和带有定义的cpp文件进行编译,我们需要在编译命令中包含带有定义的cpp文件(参见thisanswer)。但是,当我们写#include,我们不包括iostream.cpp在类似g++main.cppiostream.cpp-omain的编译语句中.如果我们编写自定义声明文件,例如hello.hpp带有类声明和hello.cpp有了定义,我们需要使用g++main.cpphello.cpp-omain编译它包括hello.hpp之后在标题中main.cpp文件。这是为什么?编辑:我们是否可以为我们的自定义头文件和cpp文件模仿标准模板

c++ - main 在 pthread 之后不继续

我使用的是Ubuntu10.10,Code::Blocks和GCC4.2。我写过这样的代码:#include#include#includeusingnamespacestd;void*thread1proc(void*param){while(true)coutMain开始,创建线程。但是(对我来说)奇怪的是main没有继续运行。我希望在屏幕上和程序结束时看到“你好”消息。因为在Windows中,在Delphi中它对我很有效。如果“main”也是一个线程,为什么它不继续运行呢?是关于POSIX线程的吗?谢谢。 最佳答案 pthre

c++ - 缺少关于 "int main(int argc, char* argv[])"的知识

我是一名物理学家,通常我只想完成计算,这就是我真正需要的。不过我一直在用intmain(intargc,char*argv[])非常令人高兴的是二进制文件在我没想到的级别上变得灵活,即初始化变量~$./program.exeabc(a,bandcarenumbersinthiscase,notlettersok?)所以问题是*如何在不使用文件的情况下以这种方式(或其他方式)“解析”或“传输”事物?*示例:假设“a.exe”给出了一组“X-Y”点(就像在电子表格上一样),我要将其插入“b.exe”。或者说我使用bash/awk脚本来格式化“a.exe”的输出格式,以便在gnuplot上绘

c++ - 为什么在 C++ 中键入 void main() 是不好的

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Differencebetweenvoidmainandintmain?为什么是voidmain(){//returnvoid}不好吗?前几天我输入了这个,有人向我指出这样做是错误的。我很困惑。我这样写已经有一段时间了,我知道它不是C++标准,但编译器不会发出任何警告。为什么这是错误的?

c++ - 没有用于调用的匹配函数...继承的 C++ 类中缺少重载

这个问题在这里已经有了答案:Inheritanceandmethodoverloading(1个回答)关闭9年前。谁能解释一下这是怎么回事。为什么编译器看不到类A中没有参数的hello()?structA{virtualvoidhello(){}virtualvoidhello(intarg){}};structB:A{virtualvoidhello(intarg){}};intmain(){B*b=newB();b->hello();return0;}g++main.cppmain.cpp:Infunction‘intmain()’:main.cpp:13:11:error:nom

c++ - 进入main()前出现栈溢出异常

当使用vs2010编译(和执行)这个c++代码时,我在它甚至可以向控制台写入“开始”的一瞥之前得到一个堆栈溢出异常。我使用的所有头文件都包含在stdafx.h中,但这显然不是这里的问题(直接包含头文件时同样的问题)。堆栈跟踪如下:>msvcr100d.dll!__set_flsgetvalue()Zeile145+0xcBytesCmsvcr100d.dll!_getptd_noexit()Zeile500Cmsvcr100d.dll!_getptd()Zeile523+0x5BytesCmsvcr100d.dll!_LocaleUpdate::_LocaleUpdate(locale

c++ - main 的递归

我读到一些地方说main()的递归在C++中是不允许的,但是当我尝试它运行时没有任何错误#includeusingnamespacestd;inti=10;intmain(){if(i==1){cout 最佳答案 显式调用main是未定义的行为,任何事情都可能发生(包括看似有效)。C++033.6.13)Thefunctionmainshallnotbeusedwithinaprogram.[...]编译器(就像所有未定义的行为一样)不需要提供诊断,运行时也不需要崩溃。 关于c++-ma

c++ - 在 C++ 程序上使用 mpicc 链接失败

我正在运行Ubuntu11.0464位。我已经安装了OpenMPI。我正在尝试构建以下代码,它是Gropp/Lusk/Skjellum的“UsingMPI”一书中测试问题的片段:#include#include"mpi.h"intmain(intargc,char*argv[]){intsize,rank;MPI::Init(argc,argv);size=MPI::COMM_WORLD.Get_size();rank=MPI::COMM_WORLD.Get_rank();MPI::Finalize();return0;}从终端,我可以使用mpicc包装器检索我在我的机器上编译和链接所

c++ - main.cc :5:30: fatal error: folder/file. h: 没有那个文件或目录

当我在Ubuntu终端中输入make时,我得到:main.cc:5:30:fatalerror:folder/file.h:Nosuchfileordirectory文件夹在工作目录下,文件.h在指定文件夹下。当我输入ls时,它还会列出我工作目录中的文件夹和文件。奇怪的是,当我在geany中打开它并要求它在#include它发现它没有问题,但是当它构建它时我得到了错误。是否需要设置一个标志以便它包含文件夹?如果是这样,那会是什么样子? 最佳答案 这在一定程度上取决于您的C编译器,但“通常”在您使用包含文件时语法编译器只会在您在命令行

c++ - 在 main 之前调用的预定义函数

我不明白如何以及何时调用此预定义函数sqrt(),如果我定义自己的函数sqrt()也是如此>它显示了一个编译错误,所以为什么预定义函数调用有效而对用户定义函数的调用失败,尽管这两个代码都位于我的可执行文件的(TEXT)部分。#includeintx=sqrt(16);intmain(){printf("x=%d\n",x);return0;}输出:x=4;当我调用我定义的sqrt()函数时出现以下错误,但当我使用预定义函数时不会出现相同的错误错误:初始化元素不是常量 最佳答案 如果您定义自己的sqrt函数,它将与math.h中已经定