2013/12/01

Arduino小知識:須在主草稿碼檔案裡#include全部所需的程式庫標頭檔

若主草稿碼檔案如下:

#include <LibA.h>

void setup(){
  // ...
}
void loop(){
  // ...
}

假設程式庫LibA需使用LibX,所以在LibA.h裡會有#include <LibX>這一行,那麼,建置這份草稿碼、編譯LibA.cpp時,將會出現「找不到LibX.h」的錯誤訊息。

怎麼會這樣呢?根據搜尋結果,Arduino IDE會在編譯主草稿碼檔案時,根據#include一一列出並記錄搜尋路徑,所以若主草稿碼檔案裡沒有#include <LibX.h>,那麼LibX就不會被列入搜尋路徑,之後編譯LibA.cpp時,就會找不到LibX.h。

壞處是需要自己在主草稿碼檔案裡一一列出全部所需的程式庫標頭檔,好處是這份草稿碼需的程式庫都列出來了,一目了然。

3 comments:

  1. 我發現define也有類似的現象....

    ReplyDelete
    Replies
    1. 請問可以說詳細一點嗎?

      Delete
  2. 1.6.x版應已修正此問題

    ReplyDelete