“Define”的版本间的差异

来自YFRobotwiki
跳转至: 导航搜索
(以“ <nowiki>#define</nowiki> is a useful C component that allows the programmer to give a name to a constant value before the program is compiled. Defined constants in ...”为内容创建页面)
 
 
第1行: 第1行:
  
<nowiki>#define</nowiki> is a useful C component that allows the programmer to give a name to a constant value before the program is compiled. Defined constants in arduino don't take up any program memory space on the chip. The compiler will replace references to these constants with the defined value at compile time.
+
'''#define'''是个有用的C组件,可以在程序编译前,给常量一个名词。被定义的常量不会占用Arduino芯片的内存。在编译时编译器会用事先定义的值来取代这些常量。<br>
  
This can have some unwanted side effects though, if for example, a constant name that had been #defined is included in some other constant or variable name. In that case the text would be replaced by the #defined number (or text).
 
  
 +
同样也会带来一些不利因素,举例来说,一旦常量被#define,将自动包含其他一些常量或者变量名。那样的话,这些代码将被替换成#define的数字。<br>
  
In general, the const keyword is preferred for defining constants and should be used instead of #define.
 
  
 +
通常,关键字[http://wiki.dfrobot.com.cn/index.php/Const_(%E4%B8%8D%E5%8F%AF%E6%94%B9%E5%8F%98%E5%8F%98%E9%87%8F) const]常被用来取代#define来定义常量。<br>
  
Arduino defines have the same syntax as C defines:
 
 
 
<font color="orange" size="+1">'''语法'''</font>
 
  
 +
Arduino宏定义与C宏定义有同样的语法:<br>
 
<pre style="color:dimgray">
 
<pre style="color:dimgray">
 
#define constantName value
 
#define constantName value
 
</pre>
 
</pre>
Note that the # is necessary.
+
'''注意:"#"符号不可缺。'''<br>
  
  
第29行: 第26行:
 
<font color="orange" size="+1">'''提示'''</font>
 
<font color="orange" size="+1">'''提示'''</font>
  
There is no semicolon after the #define statement. If you include one, the compiler will throw cryptic errors further down the page.
+
#define 声明后不能有分号。如果存在分号,编译器会抛出语义不明的错误。
  
 
<pre style="color:dimgray">
 
<pre style="color:dimgray">
第35行: 第32行:
 
</pre>
 
</pre>
  
Similarly, including an equal sign after the #define statement will also generate a cryptic compiler error further down the page.
+
类似的,在#define 声明中包含"="也会产生语义不明的编译错误。
  
 
<pre style="color:dimgray">
 
<pre style="color:dimgray">

2017年9月10日 (日) 15:47的最后版本

#define是个有用的C组件,可以在程序编译前,给常量一个名词。被定义的常量不会占用Arduino芯片的内存。在编译时编译器会用事先定义的值来取代这些常量。


同样也会带来一些不利因素,举例来说,一旦常量被#define,将自动包含其他一些常量或者变量名。那样的话,这些代码将被替换成#define的数字。


通常,关键字const常被用来取代#define来定义常量。


Arduino宏定义与C宏定义有同样的语法:

#define constantName value

注意:"#"符号不可缺。


示例

#define ledPin 3
// The compiler will replace any mention of ledPin with the value 3 at compile time.


提示

在#define 声明后不能有分号。如果存在分号,编译器会抛出语义不明的错误。

#define ledPin 3;    // this is an error 

类似的,在#define声明中包含"="也会产生语义不明的编译错误。

#define ledPin  = 3  // this is also an error 




返回Arduino语法参考列表

更多建议和问题欢迎反馈至 YFRobot论坛