3

自分で作成したタイマー ライブラリを使用しようとしていますが、その中で clock_t を使用しています。スケッチをコンパイルすると、エラーが発生し続けます。これは私が取得し続けるエラーですerror: 'clock_t' in namespace 'std' does not name a type

clock_t を使用することさえ可能ですか。私が書いたライブラリは、C++ コンパイラでは完全に機能しましたが、ここでは機能しませんでした。

私はこのArduinoのことは初めてです。どんな助けでもいいです。前もって感謝します。

4

2 に答える 2

3

私は Arduino には詳しくありませんが、C++ では#include <ctime>. clock_t が機能する C++ 実装では、ctime が別のヘッダーを介して間接的に含まれていた可能性がありますが、Arduino の他のヘッダーの実装には ctime が含まれていませんでした。

これは C++ の問題です。他の標準ヘッダーに含まれるヘッダーは標準で定義されていないため、各実装が異なる間接インクルードを使用するという理由だけで正しいヘッダーを直接インクルードできない場合、異なる実装では異なる結果が生じる可能性があります。これを回避するには、何かを使用する標準ヘッダーを常に直接含めるように注意する必要があります。これは、どの標準ヘッダーがどの標準機能を提供するかについての知識が必要であることを意味します。http://en.cppreference.com/w/が役に立ちます。

于 2012-09-28T04:15:04.887 に答える
2

Arduino はAVR Libcとリンクしており、C 標準ライブラリに似ているもののほとんどはそこから来ています。

私の知る限りclock_t、AVR Libc にはありません。ライブラリのソースファイルを検索したり、ドキュメントを調べたりしましたが、見つかりませんでした。time.hAVR Libcにもありません。

そしてArduino FAQによると:

...Arduino 言語は、コードから呼び出すことができる C/C++ 関数のセットにすぎません。スケッチは小さな変更 (関数プロトタイプの自動生成など) を経て、C/C++ コンパイラ (avr-g++) に直接渡されます。avr-g++ でサポートされているすべての標準 C および C++ コンストラクトは、Arduino で動作するはずです。...

そしてAVR-libc FAQで:

AVR で C++ を使用できますか?

ただし、現在、完全な C++ 実装に必要な標準サポート ライブラリである libstdc++ はサポートされていません。これにより、コンパイルできる C++ プログラムにいくつかの制限が課されます。その中には次のものがあります。

  • 明らかに、C++ 関連の標準関数、クラス、およびテンプレート クラスは使用できません。

そのため、Arduino は C++ 標準ライブラリを提供していません。したがって、ctime(C++) は (C) と同様に利用できませんtime.h。つまりclock_tArduino環境では使えない可能性が高いです。

于 2012-09-28T07:37:42.123 に答える