首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

为什么可以写个头文件 然后main.cpp 里面使用那个头文件的函数?解决思路

2012-04-27 
为什么可以写个头文件 然后main.cpp 里面使用那个头文件的函数?在一个texture.h 里面:C/C++ codeunsigned

为什么可以写个头文件 然后main.cpp 里面使用那个头文件的函数?
在一个texture.h 里面:

C/C++ code
unsigned int loadTexture(const char* filename);


然后texture.cpp文件里面又没有包含texture.h
texture.cpp:
C/C++ code
unsigned int loadTexture(const char* filename ){    unsigned int textureID;    int pixelLayout;        //里面内容省略    return textureID;}


然后main.cpp:

#include "texture.h"
然后就可以使用 loadTexture 这个函数了?

问题: 1, 为啥texture.cpp里面不用写include"texture.h" ?
  2, 为啥main.cpp可以使用 loadTexture 这个函数?

谢谢

[解决办法]
对于函数是可以这样,对于类不行
不然你套个namespace试试能否编译
我认为是域的作用,这里的函数相当于是全局函数,CPP文件参与编译,也就在内存中找得到这个函数,那么自然可以调用
[解决办法]
在别的头文件里包含了吧
[解决办法]
看一下下边这儿你就会明白了
http://www.d2school.com/bcyl/bhcpp/newls/ls14.htm
[解决办法]
mian函数里要调用函数,需要声明函数,头文件里就包括了你的函数声明,main里加了头文件就可以调用相应的函数了。
[解决办法]
1, 为啥texture.cpp里面不用写include"texture.h" ?
答:标准方式是需要写的,但是某些编译器会自动查找相同名称的头文件自动包含。
2, 为啥main.cpp可以使用 loadTexture 这个函数?
答:首先你包含了loadTexture的声明,其次,编译器在链接时连接了texture.cpp生成的目标文件。
[解决办法]
声明是声明,定义是定义, 声明在链接时候自己找定义, 这个包含是多余的, 不过继续看:

定义的时候包含声明是为了很多原因,简单举两个例子。

头:extern "C" void func();
源: #include ".h" void func(){}

上边包含头文件其实就防止了程序员定义时候忘掉extern "C"

再就是类成员函数的定义必须见到类的完整定义,所以包含头文件是最省事的,但不是最高效的。

只有深刻理解编译和链接, 自己决定怎么做可以在头文件改变的情况下(接口变)最少的重新编译源文件。

热点排行