极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9590|回复: 5

定义pin的时候常量和静态变量哪个更有优势?

[复制链接]
发表于 2014-2-10 23:33:05 | 显示全部楼层 |阅读模式
比如定义nano的LED脚,是用

#define LED 13;

还是用

static int LED=13;

或者干脆直接

int LED=13;

这3种写法哪个性能更好、更节省空间?

或者还有什么更好的写法?
回复

使用道具 举报

发表于 2014-2-11 01:31:27 | 显示全部楼层
我对arduino还是一窍不通,春节买的板子都还在路上。 对于以前程序的经验来说,这些定义并没有太大区别。虽然arduino的小内存又让我们回到多年前需要考虑程序如何节省资源的时代,但是这些文件真的不大。
回复 支持 反对

使用道具 举报

发表于 2014-2-11 01:56:55 | 显示全部楼层
如果我没理解错,应该是 #define LED 13; 最好

这种方式在编译时直接做了替换,所以性质上它并不是变量,应该是不会再占用内存空间了吧。

后两种都是变量,所以都要在运行时中为其分配内存空间的。
回复 支持 反对

使用道具 举报

发表于 2014-2-11 09:54:30 | 显示全部楼层
const int LED = 13
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-2-11 12:25:27 | 显示全部楼层
感谢楼上3位,又查了些资料,const 应该是比较省,#define 容易出问题
回复 支持 反对

使用道具 举报

发表于 2014-2-11 23:48:02 | 显示全部楼层
对于常量,一定是const定义最好,从占用最终代码存储空间的角度define和const都要在data段保存这个数值,是一样的。const定义是强类型定义,很多错误和潜在的问题,都可以通过编译时的错误或者警告暴露出来,把常量定义为const是良好的编程习惯。static是作用域的定义,看你的具体程序,是无所谓的。所以你这种情况,作为一个常量,最好定义为 const int LED=13;如果需要限定它的作用域,可以static const int LED=13;
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-9 21:34 , Processed in 0.051922 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表