当前文档版本为 v0.5.0,您可以访问当前页面的 开发中 版本以获取最近可能的更新。

基本语法

兼容标准C语言的大部分内容。

目前不支持的内容:

  • 多维数组;

  • 指针;

  • enum/struct/union语句;

  • 同时定义过个变量;

  • ……

Token

C 程序由各种Token组成,Token可以是关键字、标识符、常量、字符串值,或者是一个符号。

分号

在 C 程序中,分号是语句结束符。也就是说,每个语句必须以分号结束。它表明一个逻辑实体的结束。

注释

C 语言有两种注释方式:

1
// 单行注释

//开始的单行注释,这种注释可以单独占一行。

1
2
3
4
5
6
/* 单行注释 */
/* 
 多行注释
 多行注释
 多行注释
 */

/* */这种格式的注释可以单行或多行。

您不能在注释内嵌套注释,注释也不能出现在字符串或字符值中。

标识符

C 标识符是用来标识变量、函数,或任何其他用户自定义项目的名称。一个标识符以字母A-Za-z或下划线_开始,后跟零个或多个字母、下划线和数字(0-9)。

C 标识符内不允许出现标点字符,比如 @、$ 和 %。C 是区分大小写的编程语言。因此,在 C 中Manpowermanpower是两个不同的标识符。

关键字

下表列出了 C 中的保留字。这些保留字不能作为常量名、变量名或其他标识符名称。

关键字

说明

addressof

获取变量/数组/函数地址

break

跳出当前循环

case

switch配合使用

char

声明字符型变量或函数返回值类型

const

定义常量,如果一个变量被const修饰,那么它的值就不能再被改变

continue

结束当前循环,开始下一轮循环

default

switch配合使用

do

循环语句的循环体

double

暂不支持

else

条件语句否定分支(与if连用)

enum

暂不支持

extern

声明变量或函数是在其它文件或本文件的其他位置定义

float

暂不支持

for

一种循环语句

goto

直接跳转到标签

if

条件语句

int

声明整型变量

long

声明长整型变量

register

暂不支持

return

子程序返回语句(可以带参数,也可不带参数)

short

声明短整型变量

signed

声明有符号类型变量

sizeof

计算数据类型或变量长度(即所占字节数)

static

声明静态变量

struct

暂不支持

switch

分支语句

typedef

暂不支持

unsigned

声明无符号类型变量

union

暂不支持

void

声明函数无返回值或无参数

volatile

说明变量在程序执行中可被隐含地改变

while

循环语句的循环条件

_Bool

声明布尔变量或函数

inline

暂不支持

_Noreturn

标记不会返回的函数,编译器不会向函数插入return,函数被调用时使用jmp指令

typeinfo

获取表达式类型信息,结果为一个32位数值,属于扩展功能

static_if

静态条件语句,与if用法类似,属于扩展功能

static_assert

静态断言,属于扩展功能

__asm

嵌入汇编

__code

定义存储到code区常量,如果一个变量被__code修饰,那么它的值就不能再被改变

__xdata

定义存储到xdata区变量

__weak

暂不支持

__keep

暂不支持

__entry

定义入口函数,默认入口函数void __default_entry();

__interrupt

定义中断函数

__alias_at

修饰变量为别名,同时指定其存储地址

__at

为变量指定地址,只能针对全局变量和static变量

__bitpos

__alias_at__at一同使用,修饰布尔变量为别名,同时指定比特位置(0~7)

数字

支持十进制和十六进制形式数字。

进制

前缀

后缀

合法字符

示例

16

0x,0X

0-9,A-F,a-f

0xAF 0X23 0x5 0x0A

10

0-9

12 255 89 123

空格

只包含空格的行,被称为空白行,可能带有注释,C 编译器会完全忽略它。

在 C 中,空格用于描述空白符、制表符、换行符和注释。空格分隔语句的各个部分,让编译器能识别语句中的某个元素(比如 int)在哪里结束,下一个元素在哪里开始。