Arduino使用C还是C++?

70

我在某个地方看到Arduino使用“标准”的C语言,在另一个地方则说它使用“标准”的C++,究竟是哪一种呢?


C++和Arduino语言有何区别? - phuclv
2个回答

86

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

这里是你会遇到的典型结构:

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
...
lcd.begin(16, 2);
lcd.print("Hello, World!");

那是C++,不是C。


23
两种语言都被支持。引用Arduino首页的话,核心库是用C和C++编写的,并使用avr-gcc进行编译。请注意,C++是C的超集(嗯,几乎),因此它们看起来非常相似。我不是专家,但我猜您在该平台上的第一年中编程所需的大部分内容都不需要除了纯C之外的任何东西。

4
C确实几乎是C++的子集。然而,优秀的C代码看起来会与优秀的C++代码非常不同。 - user395760
真正的、非糟糕的 C 代码在编译时会被当作 C++ 代码(而那些不是 C++ 的 C 程序都很糟糕)。当然,好的 C++ 代码不会人为地、武断地将自己限制在 C 中。 - tiwo
13
还是不行。例如,在 C 中,malloc 函数的返回值不应该进行类型转换(参考:https://dev59.com/dHRB5IYBdhLWcg3wgHWr),但在 C++ 中则是必须的。现在,允许 C++ 与 C 代码进行链接和交互非常好,但为此你大多需要避免一些保留字,并在头文件中添加一个条件性(预处理器)extern "C"。这确实有很大的差别。此外,还有一堆美妙的 C99 和 C11 特性,而 C++ 并不支持;为什么好的 C 代码要人为地限制自己只使用 C++ 的一个子集呢? - user395760
3
非糟糕的 C 代码绝对不能使用 C++ 编译器进行编译。例如,每当您使用可变长度数组时,它都无法编译。或者每当您使用结构体字面量时也是如此。 - fuz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接