当前位置:首页 » 文件管理 » 头文件不可以直接参与编译
扩展阅读
哪个app可以分享朋友圈 2025-07-23 20:43:52

头文件不可以直接参与编译

发布时间: 2023-05-14 16:57:23

‘壹’ C++ 编译器如何处理头文件

预处理包括把头文件的内容在 #include 处展开,也包括处理 #define,当然,还有处理 #if / #ifdef 等等

函数(inline 函数除外)和变量在整个程序中最多只能定义一次侍睁,程序中用到的函数 / 变量必须被磨碧定义。这被称作“一处定义原则”(one-definition rule),是C++的基老游岁本规则之一

‘贰’ c++头文件为什么编译器不能编译

因为已经编译过腊消了。
我们写的咐姿类有.h和.cpp,但是我们使用衡局绝c++头文件没有.cpp,因为他生成了链接库。

‘叁’ C/C++ head file与c++ source file在vc编程使用时有什么区别啊 举几个例子可以不

没旦指有区别!我这样说可能很多人都不同意,但是head file 和sourefile只是后来人为的分开的,主要是为了方便大型的编程。比如你写一个很小的hello world程序你的head file 和source file都放起,编译的时候一起编译。假如你无聊你可以把它们分开用include<>包含,编译的时候,编译器还是会把headfile粘贴到sourcefile前面,再一起编译,所以说它们答迟厅两者是没什么区别的,只是在人的清隐逻辑上区分,编程时比较有头绪而已。

‘肆’ C语言工程文件连接出错

首先需要知道,编译器在编译的时候是按照源文件为单位进行编译的,头文件不参与编译。并且编译的时候,源文件之间互相不知道对方的存在。在链接阶山敏段,进行一些符号的查找等等。另外,一个函数(或变量)可以声明多次,但只能定义一次。否则就出现了重复定义的错误。这里的问题就是查找到了两个judge()定义。

现在按照楼主的写法,judge()在judge.h 声明并定义。虽然逗衡枝judge.hz不参与编译,但是此文件被judge.cpp和main.cpp两个头文件所包含(相当于源文件复制了那个头文件的内容放在自己的空间中),编拦睁译器在编译的时候在judge.obj和main.obj中同时发现了judge()的定义,所以就出错了。

所以按照楼上的写法就没有问题了,而且你也应该知道为什么没有问题了吧。

‘伍’ 为什么C/C++头文件单独编译会失败

估计是你编译器设置不对或者还没设液好念置,找不到iostream这个文件,程序至少有一个入口,不然也是出错的
#include<闹困iostream>
int main(void)
{
return 0;
}
这个是最简单的了,至袜备少有这个才可以编译成可执行文件的

‘陆’ C++头文件编译不了

没有main函数,培郑则无法进行编册中友译。可在后面州槐加上测试代码。
int main()
{
return 1;
}
即可,