c语言补充,C语言-补充

这里会介绍一些使用C语言时的必要部分,这部分内容在外教课没有讲过,但是在实际开发中会使用到。

1.预处理指令

1.1. 概述

预处理指令是以#开头的指令,它在编译之前执行,用于常量定义,文件包含等。

#include 语句在这里不再做介绍,但是需要注意如果.h的头文件是自己写的应该用””(双引号)将文件名括起来而不是使用<>(大于小于号一对)

1.2 define语句的使用

#define 语句可以用于定义常量(不带参数的宏定义),这里不再介绍该功能,这里介绍一下带参数的宏定义。

带参宏定义的一般形式为:

#define 宏名(形参表) 字符串

在字符串中含有各个形参。

如:[codesyntax lang=”c” lines=”normal”]

#define FOO(x) x*x+1

[/codesyntax]

使用时:

[codesyntax lang=”c” lines=”normal”]

int x=1,k;

k=FOO(x); //k=x*x+1

[/codesyntax]

请注意,宏名与后面的括号之间不能有空格!

宏的定义可以有多个形参,用逗号分隔。字符串中也可以有多个语句用分号分隔。

1.3 条件编译

条件编译可以根据条件来编译代码中的不同部分,有三种形式

第一种形式的格式为:

#ifdef 标识符

程序段1

#else

程序段2

#endif

第二种形式的格式为:

#ifndef 标识符

程序段1

#else

程序段2

#endif

第三种形式的格式为:

#if 常量表达式

程序段1

#else

程序段2

#endif

第一种形式在标识符常量被定义后编译程序段1,否则编译程序段2。第二种形式则相反。第三种是进行常量表达式,如果表达式的值为真则编译程序段1,否则编译程序段2。

如果不需要else部分舍去就可以了。

2. typedef 语句

typedef定义的一般形式为:

typedef 原类型名 新类型名

typedef 用于定义新的变量类型,例如:[codesyntax lang=”c” lines=”normal”]

struct student{

int id;

int gender;

char name[10];

}

typedef struct student STU;

[/codesyntax]之后的STU类型就会被处理为struct student。

也可以将两句合并。[codesyntax lang=”c” lines=”normal”]

typedef struct student{

int id;

int gender;

char name[10];

}STU;

[/codesyntax]

这部分代码和以上效果相同,但是这里的代码相当于声明了两个类型 STU 和 struct student。这里可以将student省略。

3. 位运算符

在单片机或DSP或ARM等开发时会运用到位运算符,位运算是进行二进制位按位运算的操作符。

C语言提供了六种位运算符:

& 按位与

| 按位或

^ 按位异或

~ 取反

<< 左移

>> 右移

进行为运算时需要对数据类型的大小有一定的认识,通常进行运算的都是16进制。

4. 其他

4.1 循环的生成

dsp或者单片机的开发通常会进入循环,用while(1)语句来实现不断的输出。有时也会使用for(;;);来阻止程序退出main函数。

4.2 汇编代码的嵌入

如非必要,可以不使用汇编代码,但是如果必须使用可以用以下方法实现

对于使用CCS的DSP开发:[codesyntax lang=”c” lines=”normal”]

asm("nop");

[/codesyntax]

对于VC:[codesyntax lang=”c” lines=”normal”]

__asm{

nop

};

[/codesyntax]

对于GCC:[codesyntax lang=”c” lines=”normal”]

__asm__("nop");

[/codesyntax]

对于汇编指令的简介这里不进行讲述,根据平台的不同而不同。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值