define – 太极创客

您所在的位置:网站首页 arduino怎么定义字符串 define – 太极创客

define – 太极创客

2023-12-27 09:29| 来源: 网络整理| 查看: 265

说明

#define宏定义

define是C语言中的预处理命令,它用于宏定义,可以提高源代码的可读性并且为编程提供方便。要解释define的用途,首先要了解预处理命令的概念。

所谓预处理是指在进行编译之前所作的工作。预处理是C语言的一个重要功能,它由预处理程序负责完成。当对一个源文件进行编译时,系统将自动引用预处理程序对源程序中的预处理部分作处理,预处理完毕后自动进入对源程序的编译。

预处理命令以“#”号开头,如#include(包含命令),#define(宏定义命令)等。预处理命令一般放在源文件的开头部分,也称为预处理部分。

在C或C++语言源程序中允许用一个标识符来表示一个字符串,称为“宏”。被定义为“宏”的标识符称为“宏名”。在编译预处理时,对程序中所有出现的“宏名”,都用宏定义中的字符串去代换,这称为“宏代换”或“宏展开”。宏定义是由源程序中的宏定义命令完成的。宏代换是由预处理程序自动完成的。

在C或C++语言中,“宏”分为有参数和无参数两种。

无参数宏定义举例

示例: [c highlight=”1, 4, 8, 10″] #define ledPin 13

void setup() { pinMode(ledPin, OUTPUT); }

void loop() { digitalWrite(ledPin, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(ledPin, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second } [/c]

在以上示例程序中: 第1行语句#define ledPin 13将宏ledPin定义为13

第4行语句pinMode(ledPin, OUTPUT);进行宏调用操作,用13去代替ledPin。经预处理宏展开后的语句为: pinMode(13, OUTPUT);

第8行语句digitalWrite(ledPin, HIGH);进行宏调用操作,用13去代替ledPin。经预处理宏展开后的语句为: digitalWrite(13, HIGH);

第10行语句digitalWrite(ledPin, LOW);进行宏调用操作,用13去代替ledPin。经预处理宏展开后的语句为: digitalWrite(13, LOW);

提示 #define语句的后面没有分号。如果你加了一个分号”;”编译器将会报错。如以下程序: #define ledPin 3; //本语句使用分号是错误的

另外在使用define时使用等号也会产生错误。如以下程序: #define ledPin = 3 //本语句使用等号是错误的

带参数宏定义

C语言允许宏带有参数。在宏定义中的参数称为形式参数,在宏调用中的参数称为实际参数。对带参数的宏,在调用中,不仅要宏展开,而且要用实参去代换形参。

带参数宏定义举例

[c highlight=”1, 5″] #define M(y) y*y+3*y int k;

void setup() { k=M(5); Serial.begin(9600); }

void loop() { Serial.println(k);

} [/c]

在以上示例程序中, 第1行语句#define M(y) y*y+3*y将宏M(y)定义为y*y+3*y

第5行语句宏调用时,用实参5去代替形参y,经预处理宏展开后的语句为: k=5*5+3*5



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3