当前位置: 首页> 教育> 锐评 > 网站建设教程搭建湖南岚鸿_网上医疗和医院网站建设_网络营销什么意思_东莞做一个企业网站

网站建设教程搭建湖南岚鸿_网上医疗和医院网站建设_网络营销什么意思_东莞做一个企业网站

时间:2025/7/11 8:16:05来源:https://blog.csdn.net/weixin_44245323/article/details/143643765 浏览次数:2次
网站建设教程搭建湖南岚鸿_网上医疗和医院网站建设_网络营销什么意思_东莞做一个企业网站

预处理命令

#include(文件包含命令)
#define(宏定义命令)
#undef
#if(条件编译)
#ifdef
#ifndef
#elif
#endif
defined函数(与if等结合使用)

简述

我们在写程序是预处理命令的意思,用在什么地方,什么时候用,使用技巧在哪里

include(文件包含命令)

尖括号:#include <stdio.h>

尖括号:编译器会到系统路径下查找头文件
也就是说编译器安装目录的头文件用尖括号,象std库

双引号 :#include “usrctrl.h”

双引号:编译器会先在当前目录下查找头文件,如果没有找到,再到系统路径下查找
也就是说我们自己生成项目工程目录的头文件用双引号,

include的作用:是把包含文件内容写入c文件

包含文件一般是申明的头文件,但这不是绝对的,
他可以是c文件,一般c文件是独立的数组数据,方便维护
有时还可使其他文件,xxx.pcm
u32 pcm_data[]={#includle “d:/xxx.pcm”} 这样也可以,直接把pcm的音频文件初始化到数组里,但数据必须是数组接受的

注意事项

1、一个 #include 命令只能包含一个头文件

2、同一个头文件可以被多次引入,多次引入的效果和一次引入的效果相同,因为头文件在代码层面有防止重复引入的机制

3、头文件包含允许嵌套

重要的话直说一遍,下面学习头文件在代码层面如何防止重复引入的机制

防止重复引入的机制:# ifndef

防止重复引入的机制:# ifndef 有多重用法

#ifndef <标识>
#define <标识>……#endif

一.头文件:tab_calc.h


#ifndef __TAB_CALC_H___
#define __TAB_CALC_H___
// #ifdef c_cplusplus
// extern "C" {
// #endif
#include "user_config.h"
//#define xDEBUG
#ifdef xDEBUG
#include <stdio.h>
#include <stdlib.h>
#define DEBUG_PRINT(fmt, ...) \do { \printf(fmt, ##__VA_ARGS__); \} while (0)
#define DEBUG_INFO(fmt, ...) \do { \printf(fmt, ##__VA_ARGS__);\ printf("Function: %s, File: %s, Line: %d\n", __FUNCTION__, __FILE__, __LINE__);\} while (0)
#define log_d(fmt, ...) \do { \printf(fmt, ##__VA_ARGS__); \printf("Function: %s, File: %s, Line: %d\n", __FUNCTION__, __FILE__, __LINE__); \} while (0)#else#define DEBUG_PRINT(fmt, ...) do {} while (0)
#define log_d(fmt, ...)  do {} while (0)
#define DEBUG_INFO(fmt, ...)  do {} while (0)
#endif#ifndef EXPORT__TAB_CALC_H___#define EXTERN#else#define EXTERN extern #endif typedef enum
{TABD6 = 0X00,   //  3*6  TABD8  , TABD10 , TABD12 , TABD14 ,TABD16                      
} d_tab_type;EXTERN s32* get_tab_data(u8 xtab);#undef EXTERN
/*******************************************/
// #ifdef c_cplusplus
// }
// #endif
#endif

#ifndef TAB_CALC_H_
#define TAB_CALC_H_
“中间内容”
#endif
意思是:在include时,__TAB_CALC_H___没有定义就写入"中间内容"到c文件 ,#ifndef __TAB_CALC_H___有没有被#define,写入"中间内容"到c文件
include的作用是把包含文件内容写入c文件:

例如:a.c include了三个头文件m.h n.h k.h tab_calc.h

这三个头文件m.h n.h k.h里面都包含了tab_calc.h,这时,“中间内容” 要在c文件重复写入四次,这样编译时,有四次重名错
但有了#ifndef就不样了,
在编译前,有一个编译预处理:
预处理先看__TAB_CALC_H___有没有被#define
m.h包含了tab_calc.h是第一个,__TAB_CALC_H___没有被#define,写入"中间内容"到c文件,同时__TAB_CALC_H___被#define
,后面__TAB_CALC_H___被#define,他遇到__TAB_CALC_H___就会跳出,不会写

有时间继续

关键字:网站建设教程搭建湖南岚鸿_网上医疗和医院网站建设_网络营销什么意思_东莞做一个企业网站

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: