你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
clyclycly 发表于 2017-1-13 10:29 您的意思是头文件里的语句被编译过一次就行了吧,比如函数声明,第一次被某C源文件包含过了,当另一些C源 ...
moyanming2013 发表于 2017-1-13 11:59 上面的回复说的是为什么要那么写以及其意义是什么。 如果你要引用头文件里面的函数或变量,一定要包含头 ...
clyclycly 发表于 2017-1-13 13:56 防止重复声明的机制使得头文件只能被执行一次,那多次包含岂不是多余,难道是为了提高程序的可读性?! ...
查看全部评分
moyanming2013 发表于 2017-1-13 14:47 你不包含头文件怎么使用它们(头文件中声明的函数和变量)呢(赶紧改掉不声明头文件,什么都放在源文件里 ...
clyclycly 发表于 2017-1-12 21:32 你是说程序编译时,__STM32F10x_IT_H就被宏定义了?
leo121_3006061 发表于 2017-1-13 18:52 我的意思是,这个条件语句是编译器来判定执行的,不是程序运行时才执行的,所以你断点追踪的时候看你不到执 ...
上面的回复说的是为什么要那么写以及其意义是什么。
如果你要引用头文件里面的函数或变量,一定要包含头文件的,跟头文件里面为了防止重复声明的机制无关。
防止重复声明的机制使得头文件只能被执行一次,那多次包含岂不是多余,难道是为了提高程序的可读性?!
你不包含头文件怎么使用它们(头文件中声明的函数和变量)呢(赶紧改掉不声明头文件,什么都放在源文件里面的做法吧!)?
比如对于一个没有#include任何头文件的源文件,要想使用strstr()则必须至少包含string.h头文件。
多个源文件如若都会使用strstr,那么都得至少包含string.h。
你平时发现没有这样做是因为一些头文件已经包含了string.h了,而你只是包含了上层的头文件了。那么多包含自然会有“重复”,使用#ifndef可以避免编译器重复执行声明(这也是不允许的),但你在源文件中包含头文件是要引用一些已经声明的函数,两者不同。
建议你赶紧多读几遍最新版的《C语言程序设计:现代方法》:
http://item.jd.com/10064146.html
评分
查看全部评分
我懂你的意思了,多谢你的耐心指教!万分感谢!!
我的意思是,这个条件语句是编译器来判定执行的,不是程序运行时才执行的,所以你断点追踪的时候看你不到执行判定语句,直接跳到宏定义了,你看楼上几位解释的,不用纠结这个地方的.
评分
查看全部评分
多谢