条件编译ifdef和extern外部声明用法(c基础知识随笔)

Matlab:

  • 1.当Matlab中没有命令提示符的时候,可能是其他程序在占用进程,这时应按键ctrl+c键查看当前程序
  • 2.在编写M文件时要使得函数名和文件名相同;另外,若每行行尾加上;则在命令行中不输出改行的结果。
  • 3.keyboard用于暂停M文件,暂时将执行权交给命令行,按键dbcont可交执行权于M文件;若按dbquit 则退出M文件,直接进命令行。

数据结构:

1.define:

define 标识符 字符串

字符串可以是常数,表达式,格式串等。我们用标识符来代替字符串。例如: #define OVERFLOW -2

注:后面一定不加分号。

2.#ifdef条件编译

格式1:

  • ifdef 标识符
  • 程序段1 (当标识符已被定义过,一般用#define命令定义,则对程序1进行编译)
  • else
  • 程序段2
  • endif

格式2:

  • if defined 标识符1
  • 程序段1
  • #elif defined 标识符2
  • 程序段2
  • #elif defined 标识符3
  • 程序段3
  • #endif

注:区别为方法一ifdef只能在两个选择中判断是否定义。

格式3:

  • if 整型常量表达式1
  •     程序段1
  • elif 整型常量表达式2
  •     程序段2
  • elif 整型常量表达式3
  •     程序段3
  • else
  •     程序段4
  • endif

格式4:

  • ifndef 宏名
  • ​ 程序段1
  • else
  • ​ 程序段2
  • endif

3.extern 变量声明

  • extern置于变量或函数之前,表示变量或函数定义在别的文件中,提示编译器遇到此变量或函数时在其他模块中寻找定义。
  • 声明可以多次,但是定义只能一次。
  • 例如:extern int start ;表示变量start已在其他文件中定义,有如下语句: int start;

4.typedef类型别名(定义整形,结构体类型,枚举类型等等)

用于为现有类型创造一个新名字,或称为类型别名。主要讲typedef struct,先分清结构体名,结构体变量。

  • typedef struct{成员1;成员2;......} GPIO_TypeDef;
  • GPIO_TypeDef GPIOA,GPIOB;

引用成员时,GPIOA.成员1;GPIOA->成员1;

注:与define 区别:

宏定义只是简单的字符串代换,而typedef是对类型说明符重新命名。

  • define PIN1 int *
  • typedef int *PIN2;

下面用PIN1,PIN2说明变量时就可以看出它们的区别:

PIN1 a,b;

在宏代换后变成:

int *a,b;

表示a是指向整型的指针变量,而b是整型变量。然而:

PIN2 a,b;

表示a、b都是指向整型的指针变量。因为PIN2是一个类型说明符。

5.调试时用debug模式,最终发布程序,用release模式,编译器会优化许多

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值