标题: C语言带#号的编译预处理命令和typedef类型名重定义 [打印本页]

作者: qiushuliang    时间: 2022-6-1 10:12
标题: C语言带#号的编译预处理命令和typedef类型名重定义
#define    宏名   字符串  

以一个宏名称来代表字符串,即当C语言程序中任何地方使用到宏名称时,则将以所代表的字符串来代替。宏定义的一般是常数或者表达式常数项,不是变量。
用宏定义有什么好处呢?
1.如C语言程序中多处 引用某一常数量,可以用宏来定义,便于程序修改,维护时修改宏名即可完成所有常数量的修改。
例:
  1. #define CLOCK_BASE   1 //程序编译时会有把程序中所有用CLOCK_BASE 表示的地方,替换成常数 1
  2. #define CLOCK_40MS  (65535-40000*CLOCK_BASE) // 表达式
  3. #define LED_ON ( )  RB1=1
  4. #define LED_OFF ( )  RB1=0

复制代码

条件编译
#if  表达式
#else
#endif

例1:
  1. #if  0  //0永远不成立,编译#else 后面的代码
  2. P1 = P1 | 0XFE ;
  3. keyvalue = P1 &  0XFE ;
  4. #else
  5. P1 = P1 | 0X7E ;
  6. keyvalue = P1 &  0X7E ;
  7. #endif
复制代码
typedef 重定义类型名
  1. typedef unsigned int  u16 ;
  2. typedef unsigned char u8 ;

  3. void typedef Demo1 (void)
  4. {
  5.    Bool j ;
  6.    j=0 ;
  7. }
复制代码

#ifndef 宏名  
  1. # ifndef  PWM  //如果PWM没有被定义过,则编译下面的代码
  2. #define PWM
  3. #define SUCCESS  0
  4. #define FAILURE 1
  5. #endif
复制代码

有人说 :   程序=数据结构+算法,C语言程序学到这里还没有正真的开始,一个用C语言编写的单片机成品,打开电源时MCU执行的第一个程序是从main()这个函数开始的,在程序中重复执行循环,可以让MCU不断的轮询外部状态,以进行实时处理。C语言程序往往在编写程序前要先指定头文件,
#include 文件名.h,因为头文件里面定义了很多单片机的公共变量及函数,必须声明成外部的(extern),以利其他模块和函数使用。下节从点亮一颗LED灯开始,说明单片机程序是如何运行起来的。

作者: a399288395    时间: 2022-6-2 08:44
这个资料挺好, 对于新手很有帮助,
作者: showlight    时间: 2022-8-7 21:28
void typedef Demo1 (void)
{
   Bool j ;
   j=0 ;
}

这个代码 运行不了, 是我的机子出什么 问题了吗?

作者: showlight    时间: 2022-8-7 21:35
这个资料很不错,可就是我不会。

作者: qiushuliang    时间: 2022-8-26 11:28
showlight 发表于 2022-8-7 21:28
void typedef Demo1 (void)
{
   Bool j ;

typedef  bit  Bool;             #类型名重定义
void TypedefDemo1(void) #更正一下错误typedef Demo1    改写成  TypedefDemo1
{
  Bool j;
  j = 0;
}




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1