社区
C语言
帖子详情
菜鸟请教: 使用自定义数据类型,却不用include头文件
奶糖人五号
2010-11-24 11:51:39
学习时,看到一段代码。 该代码并未include其它头文件,那么它编译时是如何解析自定义数据类型的?
整套代码肯定是可以编译通过的
例如
#ifndef xx_h
#define xx
SYS_INT a;
#endif
请问这是如何做到的。一般不都是include类型定义的头文件么。 是不是编译时,预设了一些include目录,或者用其它手段做到的?
...全文
434
18
打赏
收藏
菜鸟请教: 使用自定义数据类型,却不用include头文件
学习时,看到一段代码。 该代码并未include其它头文件,那么它编译时是如何解析自定义数据类型的? 整套代码肯定是可以编译通过的 例如 #ifndef xx_h #define xx SYS_INT a; #endif 请问这是如何做到的。一般不都是include类型定义的头文件么。 是不是编译时,预设了一些include目录,或者用其它手段做到的?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ctwarmer
2013-03-20
打赏
举报
回复
理解错误了....
大神带我飞
2013-03-20
打赏
举报
回复
引用 5 楼 hnuqinhuan 的回复:
这是预编译啊 不是头文件
+1
赵4老师
2013-03-20
打赏
举报
回复
VS IDE中,在不明白的符号上点鼠标右键,选转到定义。
ctwarmer
2013-03-20
打赏
举报
回复
LZ贴出的代码应该是一个头文件,其中SYS_INT为自定义类型(在其他头文件中定义,比如1.h)。 我的理解是:LZ是想问,为什么xx_h这个头文件中没有包含1.h,却可以直接使用SYS_INT,如果真的是这个问题,9# HonryZZ 的回答是正解。
奶糖人五号
2010-11-24
打赏
举报
回复
[Quote=引用 9 楼 honryzz 的回复:]
假设有头文件
1.h
typedef int SYS_INT
2.h
SYS_INT var1;
1.c
#include "1.h"
#include "2.h"
....
这样也可以呀....头文件在编译的时候直接展开...展开后这个SYS_INT还是定义了的,虽然头文件2.h中没有包含...但在c文件中包含了就可以了...
项目中有些把系统相关的adaption……
[/Quote]
哥哥啊,我要哭了,你看清了我的问题没有
我的问题是: 这个段代码所在的代码文件及项目,不用include自定义类型的头文件,照样能编译过。
HonryZZ
2010-11-24
打赏
举报
回复
假设有头文件
1.h
typedef int SYS_INT
2.h
SYS_INT var1;
1.c
#include "1.h"
#include "2.h"
....
这样也可以呀....头文件在编译的时候直接展开...展开后这个SYS_INT还是定义了的,虽然头文件2.h中没有包含...但在c文件中包含了就可以了...
项目中有些把系统相关的adaption都统一放在一个头文件中,然后每个C文件最开始就include该头文件...
奶糖人五号
2010-11-24
打赏
举报
回复
看来我没说清楚,在我贴的示例代码中,有一行 SYS_INT a; 这里的SYS_INT是自定义类型的数据结构,而此代码所在的文件又没有include其它头文件,那么编译 SYS_INT a;时,是怎么编译过去的?
qweworld
2010-11-24
打赏
举报
回复
上面打错了,因该是主函数main.c
qweworld
2010-11-24
打赏
举报
回复
一个C语言项目工程中包含多个文件,当然也包括头文件main.c,而这其中有你编写的多个.c文件和.h文件(头文件)等等很多文件,所有这些文件作为一个整体(工程project)是不可分割并且紧密联系在一起的,当其中某一个文件要包含本工程中其他某些文件的时候就在此文件前面#include<某某文件>,这里的#ifndef xx_h
#define xx
(内容)
#endif,这三句话是一个固定格式,是为了在本工程中的其他文件中避免重复引用本文件,因为重复引用时不能通过编译的,加上这三句就可以避免多次重复引用此文件,此种情况在.h(头文件中)文件中最常见.
無_1024
2010-11-24
打赏
举报
回复
这是预编译啊 不是头文件
奶糖人五号
2010-11-24
打赏
举报
回复
我在VC下开了个工程试了下,还是不行。
就算把自定义类型的头文件所在目录加入工程,代码中不include,仍然提示是未定义的数据类型
漫步者、
2010-11-24
打赏
举报
回复
这个时候不需要用#include头文件来处理了!
....
我也不知道如何讲好,呵呵!~
只可意会不可言传!
Jim_King_2000
2010-11-24
打赏
举报
回复
你在include这个头文件之前,必须首先include SYS_INT被定义的那个头文件。这套代码显示了一个很不好的风格,用户必须手动处理头文件之间的依赖。比较好的做法是,在xx.h中包含SYS_INT被定义的那个头文件以及其依赖的一切头文件。
aozhi
2010-11-24
打赏
举报
回复
你说的没错,一般都是预置了一些include目录。
这一点你可以从工程文件的代码,或者由工程文件生成的make文件中看到。
xunxun
2010-11-24
打赏
举报
回复
具体得看你makefile,这个一般是为移植考虑的,如果你的target检测配置刚好在-Dxx_h之类,这段代码就跳过去了。
wxwlll
2010-11-24
打赏
举报
回复
编译集成环境已经预置了!比如在VC6.0中如果只用到了#include<stdio.h>,那么这个可以省略。
HonryZZ
2010-11-24
打赏
举报
回复
不晓得LZ是在啥环境中编译的,比如用GCC,如果使用makefile之类的话,都可以在-CFLAG中设置共用的头文件信息
gcc -include ../headerfile...
我也是菜鸟...等高手来吧...
x.264编译问题合集
*x264 for vc http://lspbeyond.go1.icpcn.com/x264/index.htm 转载 *x264编译问题合集(不断更新中...) NOTE:vc71下试验的错误情况,vc6下会有稍许差别,但也类似。 [1] x264路径带空格 错误: 正在执行
自定义
生成步骤 nasm: error: more than one input file spec
c语言多文件编程,即main文件调用其他.c文件的方法
首页 博客 学院 下载 论坛 问答 活动 专题 招聘 APP VIP会员 博客之星 写博客 5 c语言多文件编程,即main文件调用其他.c文件的方法 原创 天泉证道 最后发布于2018-11-14 14:46:32 阅读数 4047 收藏 展开 c语言多文件编程,即main文件调用其他.c文件的方法。 两种方法的区别就是,gcc编译时,是否加b.c文件,不加的话,就在a.c文件里面,加#in...
C++面试题
1.构造一个类MySingleton,使该类只能存在一个实例. 思路: 将构造函数写为private的,然后通过一个成员静态函数来调用构造函数即可:) 例: #
include
"iostream.h" class MySingleton { private: static MySingleton* _instance; MySingleton(){ cout ~MyS
C++学习笔记——零散知识点记录
C++学习笔记——零散知识点记录1. CMakeLists.txt2. 对cout的换行测试3. cmath模块(数学)3.1 圆周率π3.2 自然对数E4. time, clock与sleep(休眠与计时)5. Eigen模块(用于矩阵运算) 环境:ubuntu系统 IDE:visual studio code 语言:C++,CMake 只是个人学习笔记,用于记录一些零散的知识点。 1. CMakeLists.txt 编译与执行由VS进行,编译的build与运行的三角在最下面的蓝色横条上这也太不起眼了找了
JNI详解---从不懂到理解
Chap1:JNI完全手册... 3 Chap2:JNI-百度百科... 11 Chap 3:javah命令帮助信息... 16 Chap 4:用javah产生一个.h文件... 17 Chap5:jni教程(very very good) 19 Chap6: JNI传递返回值... 26 15.2.2.3 传递字符串... 28
C语言
69,382
社区成员
243,073
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章