#include "Ser.h"
#include ".\ser.h"
这是。\ ser.h是Ser.cpp的可执行文件......当右键单击它并按下“打开文档。\ ser.h”时它会转到Ser.h文件...... < / p>
为什么他们再次将可执行文件(./ ser.h)作为头文件包含....不是头文件(Ser.h)足以获得需要定义的所有delarations。
答案 0 :(得分:2)
.\ser.h
不是可执行文件,它只是另一个头文件。
在文件名与大小写无关的系统中(由于它使用的是Windows路径分隔符\
,这似乎很可能在这里),它可能只包含两次相同的文件。
如果正确使用包含防护,那无关紧要。如果案例与相关,那么它们很可能是两个不同的文件。
我说“可能”,因为搜索头文件的顺序,甚至 header-names 到头文件或文件的映射,都是实现定义的xyz.h
和{{因此,可能会在不同的地方找到1}}。
答案 1 :(得分:1)
如果不知道你的包含路径是什么,就无法确定。这可能只是在不区分大小写的平台(如Windows)上包含两次相同的头文件。这可能是一个错误,但是因为包含警卫(在文件的开头和结尾有那些#ifdef
)而无害。
似乎您无法理解头文件的用途。没有 头文件。头文件只是函数和类声明的地方,但通常不是定义的。因此,如果ser.cpp
使用common_functions.cpp
中定义的某个函数,则应包含适当的标头 - 通常称为common_functions.h
。
请注意,对于C或C ++世界中的几乎任何事情,都有很多例外,但上述情况在大多数时候都适用。
答案 2 :(得分:1)
./ ser.h 不是可执行文件。请注意,以 .h 结尾的文件扩展名通常是头文件。
如果您的平台是Windows,则会找到文件扩展名为 .exe 的可执行文件。
一个 Ser.h 文件 足以接收所有声明,因此您不需要两个相同的头文件。