6

Arduinoスケッチ用にC++でスタッククラスを書いています。私はそれがAVR(それが呼ばれているものであるならば;私は正確に思い出せない)コンパイラに完全に準拠していると信じています。などの代わりに、すべてを使用しmallocました。freenewdelete

そのため、クラスに.hファイルがあります。スケッチにインポートしましたが、コンパイルしようとすると、次のエラーが発生します。

In file included from sketch_may15a.cpp:1:
/CStack.h:58:18: error: string: No such file or directory
In file included from sketch_may15a.cpp:1:
CStack.h:61: error: variable or field 'Error' declared void
CStack.h:61: error: 'string' was not declared in this scope

そして、これが私のクラスの最初の数行です。

#include <string>
using namespace std;
void Error(string message) {

そのため、Arduinoコンパイラはを見つけることができず<string>、次のいくつかの問題はそれに関連しているようです(variable or field Error declared void意味がわかりません、私のエラー関数はデバッグ目的のためだけです)。

Arduinoスケッチがインポートを必要とせずに文字列をサポートすることは知っていますが、それがC / C++/。hファイルでどのように機能するかはわかりません。グーグルしてみましたが、ドキュメントがあまりありません。

4

2 に答える 2

8

Arduinoスケッチは、サポートしていないavr-libcを使用してコンパイルされているため、C++標準ライブラリをサポートしていません。ただし、ArduinoはString必要なことを実行するクラスを提供します。

ライブラリを作成している場合は、それも必要になります#include <Arduino.h>(または#include <Wiring.h>、1.0より前のバージョンのArduino IDEを使用している場合)。

于 2012-05-16T09:47:48.213 に答える
1

マイクロプロセッサでStringクラスを使用することは、ヒープの断片化やその他の問題のために推奨されません。

新しいSafeStringライブラリ(ライブラリマネージャーから入手可能)は、これらすべての問題を解決し、完全に安全であり、スケッチが再起動することはありません。

https://www.forward.com.au/pfod/ArduinoProgramming/SafeString/index.htmlで詳細なチュートリアルを参照してください

于 2020-06-25T00:39:31.967 に答える