草庐IT

c++ - 如何从 C++ 中的另一个头文件调用函数?

我有以下3个文件(1个*.cpp和2个*.hpp):主程序文件://test.cpp#include#include"first_func.hpp"#include"sec_func.hpp"intmain(){doublex;x=2.3;std::cout-first_func.hppheader://first_func.hpp...doublefirst_func(doublex,y,x){returnx+y+x;}-sec_func.hppheader://sec_func.hpp...doublesec_func(doublex){doublea,b,c;a=3.4;b=3.

C++ 头文件和实现文件 : what to include?

有一个.h文件和一个.cpp文件,名称相同但扩展名不同。如果我想使用.cpp文件中的内容,我应该包含.h文件还是.cpp文件? 最佳答案 简单的答案是您几乎总是希望包含.h文件并编译.cpp文件。CPP文件(通常)是真实代码,而H文件(通常)是前向声明。较长的答案是您可以包含其中任何一个,它可能对您有用,但两者的结果会略有不同。“include”所做的基本上是将文件复制/粘贴到该行。扩展名是什么并不重要,它将以相同的方式包含文件的内容。但是按照惯例,C++代码通常是这样写的:SomeClass.cpp-#include"SomeCl

c++ - 我是否应该在我的头文件中包含 <stdio.h>,这样我就可以声明一个接受 FILE* 的函数?

例如在foo.h中:typedefstructfoo_tfoo_t;/*Lotsoffunctiondeclarationsdealingwithfoo_t...*/intfoo_print(constfoo_t*foo);/*Printfootostdout.*/intfoo_fprint(FILE*f,constfoo_t*foo);/*Printfootofilef.*/我不想在foo.h中乱放太多foo.h的用户可能不想包含的其他头文件,但我确实需要声明采用FILE*等类型的函数。我怀疑我是第一个遇到这种困境的人,那么在这种情况下人们通常会做什么呢?还是我想避免在我的头文件中包

c++ - 在模板类的头文件中包含 .cpp 文件

我知道模板类的定义和实现应该在同一个头文件中。但我在学校的教育有所不同。我将在头文件中包含模板类的定义,并在头文件的末尾执行#include"MyFile.cpp",其中包含模板类的实现。这是糟糕的编程习惯吗? 最佳答案 "Isthisbadprogrammingpractice?"一般不会,这是一种非常常见的技术。但问题是.cpp文件扩展名,这会影响许多IDE和构建系统将其视为常规源文件。比较常用的扩展名是.tcc、.tpc。 关于c++-在模板类的头文件中包含.cpp文件,我们在St

c++ - C++11 的标准库会有前向声明头吗?

在C++03中没有-like文件,同时有header。这在未来会改变吗?减少依赖性和更好的模块化可能很有值(value)。更新:我收到了语言创建者的答复:“实际上不可能要求所有STL供应商都这样做”。 最佳答案 不,没有新的转发文件,只有旧的.与vector相比,完整的I/O系统很大,因此优势可能不那么显着。 关于c++-C++11的标准库会有前向声明头吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.c

c++ - 类头之外的模板运算符重载实现

这个问题在这里已经有了答案:Whycantemplatesonlybeimplementedintheheaderfile?(17个答案)关闭9年前。“util.h”中定义的以下代码编译和链接。但是,当我将运算符重载的实现移至“util.cc”时,链接器无法解析符号。这是可能的,还是由于模板的性质而不能这样做?谢谢,工作工具.htemplatestructRect{Tx,y,w,h;friendbooloperator==(constRect&a,constRect&b){return(a.x==b.x&&a.y==b.y&&a.w==b.w&&a.h==b.h);}friendboo

c++ - Arch Linux 中没有 OpenGL 3 头文件

我正在尝试使用FreeGLUT编译一个非常简单的“Helloworld”OpenGL3.3程序。在我找到的所有教程中,它们都包含一个标题“gl3.h”。问题是,我没有这样的头文件。$ls-l/usr/include/GL/total2164-rw-r--r--1rootroot879720janv.17:44freeglut_ext.h-rw-r--r--1rootroot68120janv.17:44freeglut.h-rw-r--r--1rootroot2618120janv.17:44freeglut_std.h-rw-r--r--1rootroot83724727janv.1

c++ - 为什么/如何在 visual studio 中默认包含一些 c++ 头文件?

在visualstudioc++中,一些header似乎默认包含在内。例如,我可以使用std::strncpy或std::string不包括或,但我不能使用std::cout或std::min()不包括或.然后,当我想用​​g++在unix上编译源代码时,如果我忘记添加visualstudio没有让我感到温暖的包含,因为它的隐式包含,我会得到编译错误。visualstudio中的默认包含来自哪里?有没有办法为future和现有项目停用此行为?注意:我的visualstudio项目没有使用预编译头文件。 最佳答案 默认情况下,Visu

c# - 从 COM TLB 创建头文件

给定一个托管COM对象和一个关联的tlb文件,我想在不使用TLB/import命令的情况下从一些非托管C++代码访问它。但是使用头文件。有没有办法从TLB中提取头文件?谢谢 最佳答案 我发现了它(心血来潮)。OLE/COM查看器允许您将TLB文件另存为头文件、C文件或IDL文件!很酷!谢谢! 关于c#-从COMTLB创建头文件,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/116

c++ - 求图形显示/C++中(头文件)文件依赖关系的工具

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于StackOverflow来说是偏离主题的,因为它们往往会吸引自以为是的答案和垃圾邮件。相反,describetheproblem以及迄今为止为解决该问题所做的工作。关闭9年前。Improvethisquestion我知道头球后卫可以避免(大部分)麻烦;如果你愿意,可以叫我@n@l,但我只是不喜欢草率的头文件树。如果我在纸上为每个头文件画一个框并用代表#include的线连接它们,我喜欢看到一个整洁的层次结构。但我通常看到的是一个复杂的网络。也许我