c++中 为什么 函数头写一个 然后用一个cpp去写函数主体 而且在另一个cpp中只要调用.h就可以了
他是用什么东西把cpp跟.h联系起来的为什么我在源里面只需要库就可以我的库只写了函数头函数体在cpp里面他是怎么把三个cpp搞在一起的源cpp里为什么可以用X_add.c...
他是用什么 东西把cpp 跟.h联系起来的
为什么 我在 源里面只需要 库就可以
我的库只写了函数头 函数体在cpp里面
他是怎么把三个cpp搞在一起的
源cpp里为什么可以用 X_add.cpp里写的函数头 展开
为什么 我在 源里面只需要 库就可以
我的库只写了函数头 函数体在cpp里面
他是怎么把三个cpp搞在一起的
源cpp里为什么可以用 X_add.cpp里写的函数头 展开
1个回答
展开全部
这是跟编译相关的
比如 java c# 就没有头文件 为什么java c#就没有头文件而c++有呢
因为java c#编译成字节码 那么什么是字节码呢 简单的比喻就是把代码用zip压缩了一下然后加密 所以从java c#程序包里面拥有所有代码信息 甚至可以轻松反译出源代码
而c++就和c是一样的 翻译成机器码 翻译的成品里面只剩下了函数地址之类的东西 那么怎么调用编译出来的东东呢 这时候头文件就有用了
比如 一个cpp文件
int foo(int a){return a;}
在另一个文件里引用就要
extern int foo(int);
而头文件里面就存着这些声明
比如 java c# 就没有头文件 为什么java c#就没有头文件而c++有呢
因为java c#编译成字节码 那么什么是字节码呢 简单的比喻就是把代码用zip压缩了一下然后加密 所以从java c#程序包里面拥有所有代码信息 甚至可以轻松反译出源代码
而c++就和c是一样的 翻译成机器码 翻译的成品里面只剩下了函数地址之类的东西 那么怎么调用编译出来的东东呢 这时候头文件就有用了
比如 一个cpp文件
int foo(int a){return a;}
在另一个文件里引用就要
extern int foo(int);
而头文件里面就存着这些声明
更多追问追答
追问
那我把cpp里的东西直接写到.h里有什么不同没
追答
如果你写过makefile 就知道了 编译器编译的是 cpp 而h文件是作为txt复制黏贴到cpp文件里的
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询