Project_OKI’s diary

エンジニアの勉強ブログ

STM32 マイコン41(CubeIDE:階層の違うヘッダファイルのインクルード)

1.本日の内容

 (1) CubeIDEで階層の違うファイルのヘッダファイルをインクルードする方法について。

 

  使用マイコン

 

・目次

 

2.内容

(1) ファイルのインクルード方法

 ・インクルードする方法としては、相対パスで指定する方法と絶対パスで指定する方法がある。

 ・同じファイル領域にあるヘッダファイルであれば、そのまま、#includeでヘッダファイルをインクルードすればよい。

 ・別フォルダにあるファイルをインクルードする場合は、パスを指定する。

 

(2) 同じ階層のファイルの場合
/* USER CODE BEGIN Includes */
#include "printf.h"
/* USER CODE END Includes */

 

別の階層の場合

(3) 別の階層のファイルの場合

・printフォルダのprintf.hファイルをインクルードする。

・main.cファイル

/* USER CODE BEGIN Includes */
#include "print/printf.h"
/* USER CODE END Includes */

 

・print.cファイル

#include "printf.h"

 

(4) 別の階層のファイルの場合(相対パスでインクルード)

printフォルダのprintf.hファイルをインクルードする。

・ADフォルダのadc.cファイル

#include "adc.h"
#include "../print/printf.h"

・main.cファイル

/* USER CODE BEGIN Includes */
#include "print/printf.h"
#include "AD/adc.h"

/* USER CODE END Includes */

../は、1個前のファイルを示す。

今回は、adc.cファイルから見て、1個前のファイル/printファイル/printf.hの位置にあるため、../print/printf.h となっている。

 

(5) 別の階層のファイルの場合(絶対パスでインクルード)

printフォルダのprintf.hファイルをインクルードする。

CubeIDEで下記設定をすることによって、フォルダへのパスが通り、相対パス(../)ではなく、ADフォルダでも、print/printf.hやprintf.hのように書くことが可能になる。

 

 (a) Srcへのファイルパスを通す。(print/printf.hで書く場合)

・設定するファイルの上で、右クリック(下記写真では、AD_DMA)

・Propertiesをクリック

 

・Path and Symbolsに移動し、Addをクリック

・パスを追加するフォルダ名を追加する。(今回はCore/Src)

・Apply and Closeを押す。

 

上記を設定することにより、下記書き方でインクルードすることが出来る。

・adc.cファイル

#include "adc.h"
#include "print/printf.h"

つまり、今回は、Srcファイルへのパスが通っているため、Srcまでのパスは考えなくてよくなる。

 

 

 (b)printへのファイルパスを通す。(printf.hで書く場合)

 これをprintフォルダへのパスを通した場合は、print/も不要になる。

・adc.cファイルでprintf.hファイルをインクルード

#include "adc.h"
#include "printf.h"

 

(c) 上記以外に、下記方法でも、ファイルパスの追加が可能。

・Srcへのファイルパスを通す場合、通したいフォルダの上で右クリック

・Add/remove include path・・・を押下する。

 

(6) インクルード失敗時のエラー

・パスが通っていない場合、No such file or directoryというエラーが発生する。

これは、インクルードしているヘッダファイルが見つからないという意味だ。

 
 

3.関連記事

関連記事一覧:
 
組み込みC言語