首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

尝试理解C++中Arduino中的#杂注区域的用法

在C++中,#杂注区域(也称为预处理器指令)是一种特殊的语法结构,用于在编译之前对源代码进行预处理。#杂注区域以井号(#)开头,后面跟着一个预处理指令。

在Arduino中,#杂注区域的用法如下:

  1. 包含库文件:可以使用#include指令在#杂注区域中包含所需的库文件。例如,如果要使用Arduino的Wire库,可以在#杂注区域中添加#include <Wire.h>,以便在编译时将该库文件包含到源代码中。
  2. 定义常量:可以使用#define指令在#杂注区域中定义常量。例如,可以使用#define LED_PIN 13来定义一个名为LED_PIN的常量,它的值为13。这样,在源代码中可以直接使用LED_PIN代替数字13。
  3. 条件编译:可以使用#if、#ifdef、#ifndef、#elif和#endif等指令在#杂注区域中进行条件编译。这些指令可以根据条件判断是否编译某段代码。例如,可以使用#ifdef指令检查是否定义了某个宏,如果定义了,则编译某段代码。
  4. 警告和错误消息:可以使用#warning和#error指令在#杂注区域中生成警告和错误消息。这些消息将在编译时显示,用于提醒开发者注意潜在的问题或错误。
  5. 其他预处理指令:还可以使用其他预处理指令,如#undef、#pragma等,在#杂注区域中进行一些特殊的操作。

总结起来,#杂注区域在C++中的用法主要包括包含库文件、定义常量、条件编译、生成警告和错误消息等。在Arduino中,#杂注区域常用于包含所需的库文件和定义常量,以便在编译时进行预处理。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C++this指针理解用法

个人理解: (ps:class类就好比这座房子,this就好比一把钥匙,通过钥匙来打开了这座房子门,那么里面的东西就随意你取用了) this是指向实例化对象本身时候一个指针,里面存储是对象本身地址...因为this作用域是在类内部,自己声明一个类时候,还不知道实例化对象名字,所以用this来使用对象变量自身。...在非静态成员函数,编译器在编译时候加上this作为隐含形参,通过this来访问各个成员(即使你没有写上this指针)。...例如a.fun(1)fun(&a,1) this使用:1)在类非静态成员函数返回对象本身时候,直接用return *this(常用于操作符重载和赋值、拷贝等函数)。...,即将point1对象地址传递给了this指针 b.编译器编译后原型应该是void MovePoint(Point *this, int a, int b) c.在函数体可以写成{this->x

66330
  • C++typename用法

    前言 最近在看STL源码剖析时,遇到关于typename用法,平常接触到只是在定义模板参数时使用,直到遇到这个问题我才彻底查找了typename用法。...typename常规用法 typename在C++类模板或者函数模板中经常使用关键字,此时作用和class相同,只是定义模板参数;在下面的例子,该函数实现泛型交换数据,即交换两个数据内容...:修饰类型 在介绍第二个用法之前先了解下一些基本概念,限定名和非限定名 限定名(qualified name),是限定了命名空间名称。...,比如int,vector之类基类列表,比如template class C1 : T::InnerType不能在T::InnerType前面加typename构造函数初始化列表...如果类型是依赖于模板参数限定名,那么在它之前必须加typename(除非是基类列表,或者在类初始化成员列表)。。

    3.1K30

    c++ __declspec 用法

    c++ __declspec 用法 语法说明: __declspec ( extended-decl-modifier-seq ) 扩展修饰符: 1:align(#)    用__...具体用法未见到。 6....,但是只用在纯虚接口类,因此这样不能够被自己实例话.它阻止编译器初始化虚表指针在构造和析构类时候,这将移除对关联到类虚表 引用.如果你尝试这实例化一个有novtable关键字类,它将发生AV(...access violation)错误.C++里virtual缺陷就是vtable会增大代码尺寸,在不需要实例化类或者纯虚接口时候,用这个关键字可以减 小代码大小....__declspec(thread)前缀是Microsoft添加给Visual C++编译器一个修改符。它告诉编译器,对应变量应该放入可执行文件或DLL文件自己

    3.4K70

    C++ & 多种用法

    int *ptr = &var; &var就是取var变量地址int age = 30;int &ref_age = age; // ref_age是age引用,改变ref_age等同于改变age...例如,int &ref_age = age; &是用来声明ref_age是一个引用,它引用是age变量void increment(int &num) { num++;}int z = 5;...increment(z); // z值现在变为6用法③:作为参数传递,在函数参数列表,使用&可以声明引用参数,这个函数体内形参发生变化实参也会随之改变#include class...和externalValue是同一个值不同引用 return 0;}用法④:在C++11及以后版本,可以在类构造函数初始化列表中使用引用,以此来初始化类引用类型成员变量。...0011int c = a & b; // c结果为1 (二进制0001)用法⑥:位与运算符,在表达式,当&两边都是整数时,它作为位与运算符,对两个操作数每一位执行逻辑与操作​

    8600

    C++STLmap用法详解

    ,下面在例子详细说明它们用法#include #include #include using namespace std;...,也是STL特性,删除区间是一个前闭后开集合 //自个加上遍历代码,打印输出吧 } 10、mapswap用法mapswap不是一个容器元素交换,而是两个容器所有元素交换...11、排序 ·  mapsort问题map元素是自动按Key升序排序,所以不能对map用sort函数;这里要讲的是一点比较高深用法了,排序问题,STL默认是采用小于号来排序,以上代码在排序上是不存在任何问题...,map很多用法都和STL其它东西结合在一起,比如在排序上,这里默认用是小于号,即less,如果要从大到小排序呢,这里涉及到东西很多,在此无法一一加以说明。...(标示红黑,相当于平衡二叉树平衡因子),我想大家应该知道,这些地方 很费内存了吧,不说了……12、   map基本操作函数:     C++ maps是一种关联式容器,包含“关键字/值”对 begin

    2.9K20

    C++指针用法汇集

    1、指向对象指针   定义:对象空间起始地址就是对象指针。   ...说明:在建立对象时,编译系统就为每个对象分配一定存储空间以存放其成员,不过注意,在一般情况下不同对象数据存储单元存放数据成员是不相同,而不同对象函数代码却是相同,也就是说,它们函数代码是共享...定义指向类对象指针变量一般形式是:   类名 *对象指针名;   如对于与个Time类对象,我们可以有: Time t; Time *p; p=&t;   我们就可以通过对象指针访问对象和对象成员...,假如所定义类中有数据成员hour、minute、sec,成员函数有gettime(),则 (*p).hour 即为p指向对象hour成员,相当于t.hour (*p).gettime() 即为p...指向对象成员函数gettime(),相当于t.gettime()   也可以用如下形式: p->hour 和 p->gettime()和上面是等价

    12910

    C++C++ this 指针用法 ① ( C++ this 指针引入 | this 指针用法 | 代码示例 )

    一、C++ this 指针 1、C++ this 指针引入 在 C++ , this 指针 是一个特殊指针 , 由系统自动生成 , 不需要手动声明定义 , 在类每个 非静态成员函数..., 因此 this 指针是类内部使用指针 , 使用 this 可以访问 实例对象 所有 公有 public / 保护 protected / 私有 private 成员 ; 2、C++...this 指针用法 C++ this 指针用法 : 使用 this 作为指针 : 在 非静态成员函数 , 直接使用 this 作为 本实例对象 指针 ; this 使用 this-> 访问成员变量...: 在 非静态成员函数 , 直接使用如下语法 , 访问 本实例对象 非静态成员变量 ; this->成员变量名 *使用 (this)....访问成员变量 : 在 非静态成员函数 , 直接使用如下语法 , 访问 本实例对象 非静态成员变量 ; 先获取指针指向数据 然后访问数据成员变量 ; (*this).成员变量名 在 C++

    29120

    全面理解pythonself用法

    at 0x000000000284E080>-------------------------------------------------从上面的例子可以很明显看出...t.x,也就是说是Test类实例t属性x,由于实例t并没有定义属性x,所以找到了类属性x,而该属性是描述符属性,为Desc类实例而已,所以此处并没有顶用Test任何方法。...,所以在描述符类存在第二个参数ins,用来表示调用它类实例,所以t.x时可以看到第三行运行结果第二项为。...从OO本质理解pythonself 假设要对用户数据进行操作,用户数据包含name和age。如果用面向过程的话,实现出来是下面这样子。...之所以可以在类各个地方访问数据,本质就是绑定了self这个东西,它方法第一个参数,可以不叫self,叫其它名字,self只不过是个约定。 下面是面向对象实现,可以看到,结构化多了,清晰可读。

    11K10

    JavaScriptasyncawait用法理解

    昨天更新是“JavaScriptPromise使用详解”,其实也就是说了下基本用法和自己对Promise理解,可能有错误之处,也欢迎指出。...今天就说一说“JavaScriptasync/await用法理解” 编程语言中任意一个关键字都是有意义,我们先从字面意思来理解。 1.async ?...async 是“异步”简写,带async关键字函数,是声明异步函数,返回值是promise对象,如果async关键字函数返回不是promise,会自动用Promise.resolve()包装。...await 可以认为是 async wait 简写。所以应该很好理解 async 用于申明一个 function 是异步,而 await 用于等待一个异步方法执行完成。...如果它等到不是一个 Promise 对象,那 await 表达式运算结果就是它等到东西。

    1.2K1413

    C++set用法学习

    Set是C++ STL(标准模板库)一个容器类,它用于存储不同值,并且可以按照特定顺序进行访问和操作。...Set是C++ STL(标准模板库)一个容器类,它用于存储不同值,并且可以按照特定顺序进行访问和操作。Set是一种基于红黑树实现关联容器,也就是说它元素按照固定顺序排列,且每个元素都唯一。...在添加元素同时,也会保证集合元素不重复,就是说如果在Set已经包含了该元素,那么新加入数据将不会被插入到Set。...,可以遍历Set所有元素。...C++ Set还提供了其他常见操作,例如:find():查找Set是否包含指定元素并返回该元素迭代器,若没有找到则返回end()。size():返回Set中元素个数。

    34200

    C 语言 C++ assert 用法

    来源:公众号(c语言与cpp编程) 断言assert原型 void assert(int expression); assert宏原型定义在,其作用是先计算表达式expression...,就像我们上面的代码改变了i变量,在实际编写代码过程是不能这样做; 例如: assert(i++ < 100) 不好:这是因为如果出错,比如在执行之前i=100,那么这条语句就不会执行,那么i++...保持原信息内容不变 nNewSize<=0表示清除缓冲区 assert(nNewSize >= 0); assert(nNewSize <= MAX_BUFFER_SIZE); ... } 在我们使用C语言/C+...+做工程项目时,如果我们能在代码合理使用assert,能使我们创建更稳定、质量更好且不易于出错代码;当需要在一个值为FALSE时中断当前操作的话就可以使用断言。...单元测试必须使用断言;另外除了类型检查和单元测试外,断言还提供了一种确定各种特性是否在程序得到维护极好方法;

    2.9K00

    C语言 | C++assert用法

    断言assert原型 void assert(int expression); assert宏原型定义在,其作用是先计算表达式expression值为假(即为0),那么它就先向...不能使用改变环境语句,就像我们上面的代码改变了i变量,在实际编写代码过程是不能这样做; 例如: assert(i++ < 100) 不好:这是因为如果出错,比如在执行之前i=100,那么这条语句就不会执行...保持原信息内容不变 nNewSize<=0表示清除缓冲区 assert(nNewSize >= 0); assert(nNewSize <= MAX_BUFFER_SIZE); ... } 在我们使用C语言/C+...+做工程项目时,如果我们能在代码合理使用assert,能使我们创建更稳定、质量更好且不易于出错代码;当需要在一个值为FALSE时中断当前操作的话就可以使用断言。...单元测试必须使用断言;另外除了类型检查和单元测试外,断言还提供了一种确定各种特性是否在程序得到维护极好方法;

    1.7K88

    C++ getline()函数用法详解

    遇到了要输入一行字符串操作,我想除了fgets()方法(fgets()用法链接),getline()也是可以,但是我对getline操作不熟悉,便查阅了很多资料,发现都说很模糊...,借这个机会我想彻底理清楚getline用法; 网上有说getline有两种用法,我在这总结一下, 一、getline()用比较多用法 1) istream& getline (istream...cin.getline()是将字符串存储在字符数组当中,也可以读取空格,也可以自己设置结束符标志 —————————————————————————————————————————————————————— 在日常使用我们经常需要将...} 那么在这个例子是不是我们输入了一个回车就会跳出循环呢,答案是否定,while只会检测cin输入是否合法,那么什么时候会跳出循环呢,只有1.输入EOF,2.输入到了文件末尾 例2: string...} 在这个例子,逗号运算符作用就是将最后一个式子作为判定条件,即while判断是str !

    1.8K21

    c++template用法是什么?

    下文由ChatGPT生成 在C++,template是一种通用编程工具,用于创建通用函数或类。通过使用模板,可以编写可以应用于不同数据类型函数或类,从而实现代码重用性和灵活性。...通过定义函数参数类型为模板参数,可以在函数调用时根据实际参数类型来推断模板参数类型。...a : b; } 在上面的代码,template 表示我们将要定义一个模板函数,T 是一个模板参数,它表示函数可以适用于不同数据类型。...= maximum(3, 5); // 推断出模板参数为 int double result2 = maximum(2.5, 1.8); // 推断出模板参数为 double 在上述示例,...可以使用以下方式实例化类模板: Stack intStack; Stack stringStack; 在上述示例,intStack 是一个 Stack 类实例,它可以存储

    1.2K20
    领券