Arduino使用C或C++吗?

mem*_*nuk 60 c c++ arduino

来自Python,整个C/C++的东西开始时有点陌生......然后我在一个地方看到Arduino使用'标准'C,而在另一个地方它使用'标准'C++,所以等等向前.这是什么?我对这两者之间差异的粗略理解是,C++(大致)是带有类/对象的C语言.这应该如何影响我应该专注于学习主要用于Arduino的语言或方言(C或C++)?

Ant*_*hys 74

Arduino草图是用C++编写的.

这是您将遇到的典型构造:

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
...
lcd.begin(16, 2);
lcd.print("hello, world");
Run Code Online (Sandbox Code Playgroud)

那是C++而不是C.

因此,帮自己一个忙,学习C++.有很多书籍和在线资源可供选择.

  • 不要从StackOverflow指示的Lipmann书中学习C ++。这是一场教学灾难。请改用Accelerated C ++。更短,更人性化 (2认同)

tiw*_*iwo 17

两者都受支持.引用Arduino主页,

核心库用C和C++编写,并使用avr-gcc编译

请注意,C++是C的超集(好吧,差不多),因此通常看起来非常相似.我不是专家,但我想你在平台上第一年为Arduino编程的大部分内容除了普通的C之外不需要任何东西.

  • 还是不高兴.例如,在C中,[malloc`的返回值不应该被输入](http://stackoverflow.com/q/605845/395760),但在C++中它是必需的.现在,允许C++链接并与C代码交互是很好的,但为此你最需要避免一些保留字并在头文件*中添加条件(预处理器)`extern"C"`*.但这有点不同.此外,还有一大堆可爱的C99和C11功能,C++不支持这些功能; 为什么好的C代码会人为地将自己限制在C++的一个子集中? (11认同)
  • C确实*几乎是C++的一个子集.但是,非蹩脚的C代码看起来与非蹩脚的C++代码非常不同. (4认同)
  • @tiwo最糟糕的C代码绝对不能使用C ++编译器进行编译。例如,无论何时使用“可变长度数组”,它都不会编译。或每当使用*结构文字*时。 (2认同)