Answers:
#define ledPin 9
是首选。这样,int ledPin = 9;
您将分配一个int
每次使用都会使用其值的内存ledPin
。#define
在不分配内存的意义上有所不同。没有所谓的记忆ledPin
。在编译之前,代码中的所有“ ledPin”(字符串除外)都被替换9
。所以基本上
digitalWrite(ledPin);
变成
digitalWrite(9);
优点#define
:节省内存,并且在执行前全部ledPin
替换为,因此节省了处理器时间。9
小代码并不重要...
const int ledPin = 9;
优先于其他2个选项。int
除非您在某个地方定义了指向它的指针,否则不会为任何对象分配内存。
严格来说,该#define
方法将使用较少的内存。差异通常很小。如果您需要减少内存使用量,那么其他优化可能会更加有效。
支持使用的论点const int
是类型安全。无论在何处通过变量引用该引脚号,您都确切知道要获取的数据类型。使用它的代码可能会隐式或显式地对其进行升级/转换,但是其行为应非常明确。
相反,a中的值#define
易于解释。在绝大多数情况下,它可能根本不会给您带来任何问题。如果您有对值的类型或大小进行假设的代码,则只需小心一点。
就个人而言,除非我非常需要节省内存,否则我几乎总是喜欢类型安全。
最好的方法可能是
const uint8_t LED_PIN = 9; // may require to #include <stdint.h>
或
const byte LED_PIN = 9; // with no include necessary
const unsigned char LED_PIN = 9; // similarly
。按照C ++(和其他方法)的常规惯例,以大写形式命名常量。这本身不应使用任何RAM,并且每次使用大约1个字节的程序存储器。
但是,当数字大于127并被提升为更大的带符号整数时,符号扩展时可能会出现问题(对此尚不完全确定),尽管引脚号不太可能发生这种情况。
const int
吗?