< >
Home » Arduino语法参考 » arduino语法-相关语法

arduino语法-相关语法

语法列表

  • ; 分号
  • { 大括号
  • // 单行注释
  • /**/ 多行注释
  • #define 宏定义
  • #include 文件包含

; 分号语句说明

描述:

用于一个语句的结束

示例:

int a = 13;

提示:

忘记在一行的末尾加一个分号将产生一个编译器错误。该错误信息可能是明显的,且会提及丢失分号,但也许不会。如果出现一个不可理喻的或看起来不合逻辑的错误,其中一个首先要做的事就是检查分号丢失。编译器会在前一行的附近发出抱怨。

大括号说明

描述:

大括号(又称括弧或花括号)是C语言的主要组成部分。它们用在几个不同的结构中,大致如下,这可能会令初学者感到困惑。

一个左大括号必须有一个右大括号跟在后面。这是一个常被称为平衡括号的条件。Arduino IDE(集成开发环境)包含一个方便的特性以检验平衡大括号。只需选择一个大括号,甚至直接在一个大括号后面点击插入点,然后它的逻辑上的同伴就会高亮显示。
目前此功能有些许错误,因为IDE经常在文本中(错误地)发现一个已经被注释掉的大括号。

初级程序员,和从BASIC转到C的程序员常常发现使用大括号令人困惑或畏缩。毕竟,用同样的大括号在子例程(函数)中替换RETURN语句,在条件语句中替换ENDIF语句和在FOR循环中替换NEXT语句。

由于大括号的使用是如此的多样,当插入一个需要大括号的结构时,直接在打出开括号之后打出闭括号是个不错的编程实践。然后在大括号之间插入一些回车符,接着开始插入语句。你的大括号,还有你的态度,将永远不会变得不平衡。

不平衡的大括号常常导致古怪的,难以理解的编译器错误,有时在大型程序中很难查出。因为它们的多样的使用,大括号对于程序的语法也是极其重要的,对一个大括号移动一行或两行常常显著地影响程序的意义。
大括号的主要用法

示例:

//函数
void myfunction(datatype argument){
    statements(s)
}
 


//循环
   while (boolean expression)
  {
     statement(s)
  }

  do
  {
     statement(s)
  } while (boolean expression);

  for (initialisation; termination condition; incrementing expr)
  {
     statement(s)
  } 
 


//条件语句
 
  if (boolean expression)
  {
     statement(s)
  }

  else if (boolean expression)
  {
     statement(s)
  } 
  else
  {
     statement(s)
  }

注释说明

描述:

注释是程序中的一些行,用于让自己或他人了解程序的工作方式。他们会被编译器忽略,而不会输出到控制器,所以它们不会占用Atmega芯片上的任何空间。

注释唯一的目的是帮助你理解(或记忆)你的程序是怎样工作的,或者是告知其他人你的程序是怎样工作的。标记一行为注释只有两种方式:

示例:

x = 5;  //这是一个单行注释。此斜线后的任何内容都是注释
         //直到该行的结尾
        
/* 这是多行注释 - 用它来注释掉整个代码块
if (gwb == 0){   //在多行注释中使用单行注释是没有问题的
x = 3;           /* 但是其中不可以使用另一个多行注释 - 这是不合法的 */
}


//别忘了加上“关闭”注释符 - 它们必须是平衡的
*/

提示:

当实验代码时,“注释掉”你的程序的一部分来移除可能是错误的行是一种方便的方法。这不是把这些行从程序中移除,而是把它们放到注释中,所以编译器就会忽略它们。这在定位问题时,或者当程序无法编译通过且编译错误信息很古怪或没有帮助时特别有用。

define语句说明

描述:

#define 宏定义

宏定义是一个有用的C组件,它允许程序员在程序编译前给常量取一个名字。在arduino中定义的常量不会在芯片中占用任何程序空间。编译器在编译时会将这些常量引用替换为定义的值。

这虽然可能有些有害的副作用,举例来说,一个已被定义的常量名被包含在一些其它的常量或变量名中。那样的话该文本将被替换成被定义的数字(或文本)。

通常,用const关键字定义常量是更受欢迎的且用来代替#define会很有用。

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

语法:

#define constantName value 

注意‘#’是必须的

示例:

#define ledPin 3
// 编译器在编译时会将任何提及ledPin的地方替换成数值3。

提示:

#define语句的后面分号。如果你加了一个,编译器将会在进一步的页面引发奇怪的错误。

#define ledPin 3;    // this is an error 

类似地,包含一个等号通常也会在进一步的页面引发奇怪的编译错误。

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

include语句说明

#include 包含

#include用于在你的sketch中包含外部的库。这使程序员可以访问一个巨大的标准C库(预定义函数集合)的集合。

AVR C库(AVR是Atmel芯片的一个基准,Arduino正是基于它)的主参考手册页在这里。

注意#include和#define相似,没有分号终止符,且如果你加了,编译器会产生奇怪的错误信息。

示例:

该示例包含一个用于输出数据到程序空间闪存的库,而不是内存。这会为动态内存需求节省存储空间且使需要创建巨大的查找表变得更实际。

#include <avr/pgmspace.h>

prog_uint16_t myConstants[] PROGMEM = {0, 21140, 702  , 9128,  0, 25764, 8456,
0,0,0,0,0,0,0,0,29810,8968,29762,29762,4500};

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: arduino语法, arduino相关语法