2012-09-28 23 views
3

我想使用一個計時器庫,我創建了我的自我,它使用clock_t。當我編譯草圖時,我不斷收到錯誤。這是我不斷收到的錯誤error: 'clock_t' in namespace 'std' does not name a type你如何在Arduino上添加clock_t?

甚至可以使用clock_t。我寫的庫在C++編譯器上完美工作,但不在這裏。

我是新來的這個Arduino的東西,任何幫助將很好。提前致謝。

+1

'#include '? – nneonneo

回答

2

Arduino鏈接到AVR Libc,大部分看起來與C標準庫類似的東西都來自它。

據我所知,AVR Libc中沒有clock_t。我在圖書館的源文件中搜索,並環顧了documentations,但沒有找到它。 AVR Libc中也沒有time.h

而且根據Arduino FAQ

... Arduino語言僅僅是一組的C/C++功能,可以從你的代碼中調用。您的草圖會經歷較小的變化(例如自動生成函數原型),然後直接傳遞給C/C++編譯器(avr-g ++)。所有標準的C和C++結構supported by avr-g++都應該在Arduino中工作。 ...

而且在AVR-libc FAQ

我可以在AVR使用C++?

但是,目前不支持libstdC++,這是完整的C++實現所需的標準支持庫。這對可編譯的C++程序施加了許多限制。其中包括:

  • 顯然,沒有任何C++相關的標準函數,類和模板類可用。

所以,Arduino的不爲你提供C++標準庫 - 所以ctime(C++)不可用,以及time.h(C)。也就是說,很可能在Arduino環境中不能使用clock_t

+0

-1; AVR Libc是C庫,不是「C/C++庫」。現在的問題是關於C++,可以從「命名空間」std'「錯誤中看到。 – MSalters

+0

加法清除它:沒有libstdC++或其他實現,'std ::'完全丟失。 – MSalters

+0

感謝您的幫助 – user1705183

3

我不熟悉Arduino,但在C++中,您必須登錄#include <ctime>。有可能在clock_t爲你工作的C++實現中,ctime是通過另一個頭部間接包含的,而Arduino的另一個頭部實現不包括ctime。

這是C++的問題;包含在其他標準頭文件中的頭文件並未由標準定義,因此,如果僅僅因爲每個實現使用不同的間接包含文件而無法直接包含正確頭文件,那麼不同的實現可能會產生不同的結果。爲避免這種情況,您應該小心,始終直接包含您使用任何內容的任何標準標頭。這意味着您需要了解哪些標準頭文件提供哪些標準設施。 http://en.cppreference.com/w/可以幫助你。