• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

#define DHT11_PIN 4 和int DHT1

荒山绿彩 2017-04-06 浏览量:2064
#define DHT11_PIN 4 和int  DHT11_PIN =4;有啥区别啊?
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 功能使用上差不多的。

    #define 是宏定义。即DHT11_PIN 的值为4;这个值是不能更改的。是个常量

    在编译之前,对文件进行预处理,将所以的DHT11_PIN替换成4;

    define的用法:http://blog.chinaunix.net/uid-17188120-id-4026378.html


    int,是定义了一个int型的变量,这个变量值是带符号 的4,但是这个变量是可以更改的。更改成多少都可以,只要在int的范围内。


    • 发布于 2017-04-06
    • 举报
    • 评论 0
    • 2
    • 0

其他答案 数量:8
  • 一个是宏定义,一个是定义的变量。用法上没什么区别,但是define相当于预置的语句,不可改变。
    • 发布于2017-04-06
    • 举报
    • 评论 1
    • 1
    • 0
荒山绿彩 回复了 LiuYang :前者是宏定义?后者是变量? 回复

  • 前面一个是给DHT11_PIN定义并赋值为4,这个变量全局定义都为4,就是说整个工程里面只要出现这个数据都是视为4

    后面一个是定义了 DHT11_PIN 这个数据的类型为int,并且给这个数据赋值为4​,这个数据仅仅是局部变量,仅在当前的文件中有意义,在工程中别的文件中无意义

    • 发布于2017-04-06
    • 举报
    • 评论 0
    • 1
    • 0

    1. #define是宏定义的意思

      2. 宏定义是用宏名来表示一个字符串,在宏展开时又以该字符串取代宏名,这只是一种简单的代换,字符串中可以含任何字符,可以是常数,也可以是表达式,预处理程序对它不作任何检查。如有错误,只能在编译已被宏展开后的源程序时发现。

    3.宏定义不是说明或语句,在行末不必加分号,如加上分号则连分号也一起置换。

    4.宏定义其作用域为宏定义命令起到源程序结束。如要终止其作用域可使用#undef命令。

    • 发布于2017-04-06
    • 举报
    • 评论 0
    • 0
    • 0

  • 能用int的,我一般不用define

    define用多了,调试时候出点错都找不到错在哪

    • 发布于2017-04-06
    • 举报
    • 评论 0
    • 0
    • 0

  • define后面接的是常量,不会变的,也无法赋值,是全局有用的。int定义的是变量,局部可以使用。
    • 发布于2017-04-06
    • 举报
    • 评论 0
    • 0
    • 0

  • 這段Code來說,效果是一樣的

    指是#define為precomplie就會安插到引用他的地方取代,而int用法會占用Memory空間,

    尤其是當作const來使用時候,都會放在global的地方,#define跟int都可改動但前者不需要額外Memory空間

    因此#define是較好的用法

    以上供參考

    • 发布于2017-04-06
    • 举报
    • 评论 0
    • 0
    • 0

  • 其实就是常量和变量的区别,define的东西不可更改,变量的东西,可能被意外改变
    • 发布于2017-04-06
    • 举报
    • 评论 0
    • 0
    • 0

  • 第一句是在预编译阶段把程序段里面的所有DHT11_PIN4换成了4,而第二句则是将DTH11当成了一个变量,这是在程序运行阶段将DHT11_PIN换成了4
    • 发布于2017-04-07
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

#define DHT11_PIN 4 和int DHT1