什么时候用 include的用法什么时候不用

查看: 40185|回复: 39
include和#include有什么不同,什么时候用哪个,详细点?
主题帖子精华
新手上路, 积分 38, 距离下一级还需 12 积分
在线时间0 小时
#include&stm32f10x_lib.h&和#include&stm32f10x.h&有什么不同,什么时候用哪个,详细点,服务态度也太差了,问两个问题爱说不说,就是不懂才问啊,懂了还问你吗
主题帖子精华
金钱118621
在线时间928 小时
楼主典型的一人爽歪歪,别人累半死。
重复性的问题,如果10个人问,我要回答10次,1000个人问,我要回答1000次。
如果论坛问了,我发帖子给提问者,不就OK了么?
我要你论坛提问的目的就在这里,个中关系请看此帖:
楼主问了很多很简单的问题:比如,如何在MDK下,打开一个头文件,楼主不知道(PS:我们教程教了的,见《不完全手册V2.3》第83页)。
比如,README在哪里,找不到,不会找。
其他一些电路基础问题,我就不说了。
我认为这些问题,你应该自己知道找答案,然后,好不容易问了一个有点共性的问题,让楼主来论坛发个帖子,方便别的初学者了解,很明显,楼主貌似很不情愿。
好了,说问题。
#include&stm32f10x_lib.h&和#include&stm32f10x.h&的区别,这确实是个好问题,所以在这里好好解答一下。
首先,我们看#include&stm32f10x_lib.h&这个头文件。
#include&stm32f10x_lib.h&是ST公司V2.0的库函数使用的头文件,用MDK3.80A,打开Mini板例程-扩展实验1 自定义汉字显示实验,如图1所示:
de43c353acda4b1b59fbf194042dbc7b_760.png (0 Bytes, 下载次数: 1)
22:54 上传
图1 stm32f10x_lib.h
只要你善于观察,这个图片,告诉我们好几个信息了:
1,文件的路径,也就是stm32f10x_lib.h,到底是在哪个位置,在图中1处就告诉你了。
2,文件的版本,图中2处,说明了,这是V2.0.1版本。
3,该文件包含的一些内容,也就是图中3处的内容。
图1,我们是用MDK3.80A打开的Mini板例程,因为MDK3.80A自带了这些头文件,所以可以打开。
但是,如果你用MDK4.7/MDK5打开,就没法找到了,这也就是为什么,我们老版本的例程,存在高版本的MDK编译的时候,报找不到stm32f10x_lib.h的错误的原因了。
而stm32f10x_lib.h里面,我们经过分析,实际可以用:stm32f10x_map.h和stm32f10x_nvic.h来替代,所以新版本的Mini板例程,都是用这两个替代stm32f10x_lib.h了,而
为了避免不同编译器,可能不会带这两个文件,而报错的问题,我们将这些相关头文件统一拷贝到了例程\SYSTEM\sys文件夹下,如图2所示:
77b0af57e2f2e3fa85acd976b06c323e_350.png (0 Bytes, 下载次数: 1)
22:54 上传
图2 SYSTEM\SYS 文件夹里面的内容
所以,Mini板的最新例程,都是可以在MDK个版本下直接编译的。
新例程下载地址:
接下来我们再说说:#include&stm32f10x.h&这个头文件。
#include&stm32f10x.h&是ST公司V3.5及以后版本统一使用的库函数头文件了,说白了就是把原来的stm32f10x_lib.h,换成了#include&stm32f10x.h&,规范了代码,不需要包含那么多的头文件了。
这里打开战舰板,寄存器例程-按键实验。
如图3所示:
3b57edfd7ce8d1a20c9ade072bb7aa76_407.png (0 Bytes, 下载次数: 1)
22:54 上传
图3 stm32f10x.h这是我们用MDK5.10打开战舰板寄存器例程,按键实验,查看stm32f10x.h的内容,对比图1,应该看出些区别了。
MDK5界面大改,这里不多说,关键没法查看stm32f10x.h的路径了,不知道放在哪里。。。
怎么办呢?
俗话说,上天给人关闭一扇门的时候,一定会为他开启另外一扇门,你把鼠标,放到stm32f10x.h选项卡上,然后右键,是不是弹出了一个小窗口?如图4所示:
4c43deaf37e506e3f505f8_221.png (0 Bytes, 下载次数: 1)
22:54 上传
图4 拷贝全路径&打开包含文件夹
以上两个划红线的,大家自己试试,就知道什么情况了,我就不多说了。
同样,图3中,也告诉你stm32f10x.h的版本了。
另外,如何查看某个.c文件,包含了哪些头文件,见图3中3处的方法,点击.c文件前面的+号标记,就可以展开其包含的头文件了。
但是很多网友会问,明明我的delay.c只包含了#include "delay.h",怎么会包含这么多呢?
答案就是:头文件可以层层包含的... &A包含B,B包含C,C包含D,D包含E,E包含F...
那么只要你包含了A,那么B,C,D,E,F,就都是会包含进来的。。。
同样,为了兼容不同版本的MDK,以避免MDK不自带头文件,带来的错误,我们将:stm32f10x.h和system_stm32f10x.h拷贝到了SYSTEM\SYS 文件夹下,这里大家查看战舰板最新例程就可以知道。
最后,再总结下:
1,stm32f10x_lib.h是2.0的ST库函数头文件,在我们开发板老版本的寄存器版本例程上面有用到,新版本例程一律没用了。
2,stm32f10x.h,是3.5的ST库函数头文件,在战舰板新版本例程,全部使用这个头文件了。
3,为了兼容不同的MDK版本,我们将这些所需的头文件,一律拷贝到了工程\SYSTEM\sys 文件夹了。
我是开源电子网站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子& &
主题帖子精华
新手上路, 积分 34, 距离下一级还需 16 积分
在线时间0 小时
回复【2楼】正点原子:
---------------------------------
谢谢原子哥啊!那是不是可以这样理解:寄存器版本和库函数3.5以前的版本用#include&"stm32f10x_lib.h"或者#include&&stm32f10x_map.h&+#include&&stm32f10x_nvic.h&,而库函数3.5及以后的版本用#include&"stm32f10x.h"
主题帖子精华
中级会员, 积分 364, 距离下一级还需 136 积分
在线时间12 小时
好帖,顶一个!!
主题帖子精华
金牌会员, 积分 1314, 距离下一级还需 1686 积分
在线时间191 小时
主题帖子精华
金钱118621
在线时间928 小时
回复【3楼】:
---------------------------------
是的
我是开源电子网站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子& &
主题帖子精华
新手上路, 积分 34, 距离下一级还需 16 积分
在线时间0 小时
回复【6楼】正点原子:
---------------------------------
我有个问题,想发个贴,为什么发不了啊?
主题帖子精华
新手上路, 积分 38, 距离下一级还需 12 积分
在线时间2 小时
好帖子&顶一下&&学习了&mark
主题帖子精华
金钱118621
在线时间928 小时
回复【7楼】:
---------------------------------
点击发表主题,就可以啊
我是开源电子网站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子& &
主题帖子精华
初级会员, 积分 66, 距离下一级还需 134 积分
在线时间0 小时
好帖&&&顶起
主题帖子精华
初级会员, 积分 155, 距离下一级还需 45 积分
在线时间0 小时
回复【9楼】正点原子:
---------------------------------
stm32f10x_conf,it,marco,type这4个文件和map,nvic作用一样吗
主题帖子精华
金钱118621
在线时间928 小时
回复【11楼】chengmingluo:
---------------------------------
不一样。
我是开源电子网站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子& &
主题帖子精华
新手上路, 积分 33, 距离下一级还需 17 积分
在线时间0 小时
回复【2楼】正点原子:
---------------------------------
了然,谢谢原子哥
主题帖子精华
初级会员, 积分 53, 距离下一级还需 147 积分
在线时间0 小时
了解了&&&不错
主题帖子精华
新手上路, 积分 36, 距离下一级还需 14 积分
在线时间0 小时
太感谢了,真是太好了,感谢原子哥
主题帖子精华
初级会员, 积分 111, 距离下一级还需 89 积分
在线时间0 小时
............
主题帖子精华
初级会员, 积分 70, 距离下一级还需 130 积分
在线时间12 小时
原子哥,&&#include&"stm32f10x.h"与#include&"stm32f10x_lib.h"怎样移植???
主题帖子精华
金钱118621
在线时间928 小时
回复【17楼】图灵信念:
---------------------------------
两者选其一。推荐前者。
我是开源电子网站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子& &
主题帖子精华
中级会员, 积分 235, 距离下一级还需 265 积分
在线时间46 小时
回复【2楼】正点原子:
---------------------------------

主题帖子精华
新手上路, 积分 33, 距离下一级还需 17 积分
在线时间0 小时
太感谢了,真是太好了,感谢原子哥
没有最好只有更好
主题帖子精华
在线时间621 小时
非常感谢,问题解决
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
主题帖子精华
新手上路, 积分 29, 距离下一级还需 21 积分
在线时间0 小时
困扰很长时间问题解决,很高兴,非常好!
请教各位大侠:在7寸屏上做内部Flash实验 把7寸屏的gt811.c ctiic.c 添加HARDWARE组,blcd.c替换原先的ILI93XX.C,在blcd.c文件里加了void LCD_Set_Window(u16 sx,u16 sy,u16 width,u16 height)函数,这个函数没修改,也不会修改,编译下载后,字符能正常显示,而图片显示乱七八糟。请教怎么修改?
主题帖子精华
新手上路, 积分 31, 距离下一级还需 19 积分
在线时间0 小时
回复【2楼】正点原子:
---------------------------------
原子哥。已经拷贝全路径了啊,可是用MDK5.1编译战舰的例程还是会报错啊。能再详细点解释么。。
主题帖子精华
新手上路, 积分 31, 距离下一级还需 19 积分
在线时间0 小时
回复【18楼】正点原子:
---------------------------------
用MDK5.1打开的时候的提示是,..\SYSTEM\delay\delay.h(3):&error:&&#5:&cannot&open&source&input&file&"stm32f10x_map.h":&No&such&file&or&directory。
但是已经把这个文件放在头文件里了啊。。。好纠结啊。。。
主题帖子精华
金钱118621
在线时间928 小时
回复【24楼】goldtime4:
---------------------------------
现在已经不用这个头文件了。
我是开源电子网站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子& &
主题帖子精华
新手上路, 积分 31, 距离下一级还需 19 积分
在线时间0 小时
回复【25楼】正点原子:
---------------------------------
那用哪个啊原子哥。。。每次都是这样一堆错误,真是新手,您给说个详细的解决方案呗,跪谢了。
主题帖子精华
金钱118621
在线时间928 小时
回复【26楼】goldtime4:
---------------------------------
stm32f10x.h
具体的,参考我们开发板的最新例程。
我是开源电子网站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子& &
主题帖子精华
初级会员, 积分 94, 距离下一级还需 106 积分
在线时间2 小时
好帖。。。mark
主题帖子精华
初级会员, 积分 122, 距离下一级还需 78 积分
在线时间23 小时
好贴。。。。。。。。。
主题帖子精华
初级会员, 积分 55, 距离下一级还需 145 积分
在线时间2 小时
顶一个,学习了。感谢原子哥!
主题帖子精华
中级会员, 积分 260, 距离下一级还需 240 积分
在线时间0 小时
回复【27楼】正点原子:
---------------------------------
不容易。
规格严格,功夫到家
主题帖子精华
初级会员, 积分 151, 距离下一级还需 49 积分
在线时间8 小时
好帖子,顶一个
犯错不可怕,可怕的是不敢面对它
主题帖子精华
初级会员, 积分 142, 距离下一级还需 58 积分
在线时间17 小时
从本论坛下载了一个例程&名字touch。里面同样stm32f10x_lib.h,修改成stm32f10x.h&后,仍报错。将系统文件\SYSTEM\sys替换后也报错,怎么办呢
主题帖子精华
中级会员, 积分 423, 距离下一级还需 77 积分
在线时间20 小时
回复【33楼】YZM:
---------------------------------
你下载最新版的试试。。。
主题帖子精华
新手上路, 积分 21, 距离下一级还需 29 积分
在线时间0 小时
回复【6楼】正点原子:
------------------------------
请问原子哥,我的板子是STM32F103VE,安装了STM的库函数但是又出现了一下错误"no&source":&Error:&command-line:&&#992:&invalid&macro&definition:&STM32F10X_HD.USE_STDPERIPH_DRIVER,请问这是为什么啊?
做人就要有点王者分度,王者霸气,不然就会畏畏缩缩,遭人鄙视,胆小如鼠是最可怕的
主题帖子精华
初级会员, 积分 85, 距离下一级还需 115 积分
在线时间18 小时
好帖子 顶一下&&学习了 mark
主题帖子精华
初级会员, 积分 81, 距离下一级还需 119 积分
在线时间10 小时
主题帖子精华
初级会员, 积分 81, 距离下一级还需 119 积分
在线时间10 小时
主题帖子精华
初级会员, 积分 81, 距离下一级还需 119 积分
在线时间10 小时
主题帖子精华
初级会员, 积分 116, 距离下一级还需 84 积分
在线时间49 小时
好帖学习哈
Powered byc语言中何时引用#include &string.h&_百度知道
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。
c语言中何时引用#include &string.h&
使用gets,puts函数时用在前注明#include &string.h&吗
当使用到string.h中的函数时,需要引用头文件string.hstring.h为C语言库函数头文件之一,包含了内存处理及字符串处理函数。1 内存处理相关函数,包括memcmp, memcpy, memset等。2 字符串处理函数,包括strcpy, strcmp, strlen,strstr等。当用到相关函数时,推荐引用string.h。
软件工程师
当你用到如strlen(),strcpy(),strcmp()这样的函数时要用到string。h头函数
本回答被提问者采纳
string.h&stdio.h&中&puts都是基本输入输出函数在头文件&quotgets/中是字符串操作函数比如strcpy&#47
这些不用 一般用到str开通的函数要#include &string.h&比如 strlen
strcat等等
需要用字符串函数时,做预编译声明,strXXX()这类函数……
引用字符处理函数
gets,puts是 stdio.h里面的string.h里面有这些,MSDN上的String-Manipulation RoutinesRoutine Use _mbscoll, _mbsicoll, _mbsncoll, _mbsnicoll Compare two multibyte-character strings using multibyte code page information (_mbsicoll and _mbsnicoll are case-insensitive) _mbsdec, _strdec, _wcsdec Move string pointer back one character _mbsinc, _strinc, _wcsinc Advance string pointer by one character _mbslen Get number of multibyte characters in multibyte- dependent upon OEM code page _mbsnbcat Append, at most, first n bytes of one multibyte-character string to another _mbsnbcmp Compare first n bytes of two multibyte-character strings _mbsnbcnt Return number of multibyte-character bytes within supplied character count _mbsnbcpy Copy n bytes of string _mbsnbicmp Compare n bytes of two multibyte-character strings, ignoring case _mbsnbset Set first n bytes of multibyte-character string to specified character _mbsnccnt Return number of multibyte characters within supplied byte count _mbsnextc, _strnextc, _wcsnextc Find next character in string _mbsninc. _strninc, _wcsninc
Advance string pointer by n characters _mbsspnp, _strspnp, _wcsspnp Return pointer to first character in given string that is not in another given string _mbstrlen Get number of multibyte characters in multibyte- locale-dependent sprintf, _stprintf Write formatted data to a string strcat, wcscat, _mbscat Append one string to another strchr, wcschr, _mbschr Find first occurrence of specified character in string strcmp, wcscmp, _mbscmp Compare two strings strcoll, wcscoll, _stricoll, _wcsicoll, _strncoll, _wcsncoll, _strnicoll, _wcsnicoll Compare two strings using current locale code page information (_stricoll, _wcsicoll, _strnicoll, and _wcsnicoll are case-insensitive) strcpy, wcscpy, _mbscpy Copy one string to another strcspn, wcscspn, _mbscspn,
Find first occurrence of character from specified character set in string _strdup, _wcsdup, _mbsdup Duplicate string strerror Map error number to message string _strerror Map user-defined error message to string strftime, wcsftime Format date-and-time string _stricmp, _wcsicmp, _mbsicmp Compare two strings without regard to case strlen, wcslen, _mbslen, _mbstrlen Find length of string _strlwr, _wcslwr, _mbslwr Convert string to lowercase strncat, wcsncat, _mbsncat Append characters of string strncmp, wcsncmp, _mbsncmp Compare characters of two strings strncpy, wcsncpy, _mbsncpy Copy characters of one string to another _strnicmp, _wcsnicmp, _mbsnicmp Compare characters of two strings without regard to case _strnset, _wcsnset, _mbsnset Set first n characters of string to specified character strpbrk, wcspbrk, _mbspbrk Find first occurrence of character from one string in another string strrchr, wcsrchr,_mbsrchr Find last occurrence of given character in string _strrev, _wcsrev,_mbsrev Reverse string _strset, _wcsset, _mbsset Set all characters of string to specified character strspn, wcsspn, _mbsspn Find first substring from one string in another string strstr, wcsstr, _mbsstr Find first occurrence of specified string in another string strtok, wcstok, _mbstok Find next token in string _strupr, _wcsupr, _mbsupr Convert string to uppercase strxfrm, wcsxfrm Transform string into collated form based on locale-specific information vsprintf, _vstprint Write formatted output using a pointer to a list of arguments
其他4条回答
为您推荐:
其他类似问题
include的相关知识
换一换
回答问题,赢新手礼包使用include而不使用include_once
<span type="1" blog_id="1116921" userid='
分享到朋友圈
喜欢我的文章,请分享到朋友圈什么时候用 include&stdlib.h&什么时候不用_百度知道
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。
什么时候用 include&stdlib.h&什么时候不用
我有更好的答案
果要使用某些库函数需要包含此头文件该文件包含了的C语言标准库函数的定义stdlib、ldiv_t和lldiv_t; 宏例如EXIT_FAILURE、div_t.h里面定义了五种类型、一些宏和通用工具函数、atoi()、atol()、rand()、srand()、exit()等等、wchar_t。 类型例如size_t、realloc()。 具体的内容你自己可以打开编译器的include目录里面的stdlib、free()、system()、EXIT_SUCCESS、RAND_MAX和MB_CUR_MAX等等; 常用的函数如malloc()、calloc()
采纳率:88%
来自团队:
为您推荐:
其他类似问题
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;3被浏览142分享邀请回答0添加评论分享收藏感谢收起0添加评论分享收藏感谢收起写回答

我要回帖

更多关于 php include的用法 的文章

 

随机推荐