MinGWでCを使用すると、「不明な型名 'uint8_t'」などが取得されます。これを解決する方法はありますか?
stdint.h
またはinttypes.h
を含めてみてください。
uint8_t
型エイリアスを使用するには、stdint.h
標準ヘッダーを含める必要があります。
編集:
明確にする:#include
sの順序が重要であり、それが設計パターンの一部ではない場合(読んでください:理由はわかりません)、設計を再考する必要があります。ほとんどの場合、これは、問題を引き起こすヘッダーファイルに#include
を追加する必要があることを意味します。
この時点で、この例のメリットを議論/擁護することにはほとんど関心がありませんが、コンパイルプロセスのいくつかの微妙な違いと、エラーが発生する理由を説明するため、そのままにします。
編集終了
#include
the stdint.h
を使用する前に、#include
を必要とする他のライブラリインターフェイスを使用する必要があります。
例:
LCDライブラリはuint8_t型を使用します。ライブラリをインターフェイス(Display.h
)と実装(Display.c
)で作成しました
Display.cには、次のインクルードがあります。
#include <stdint.h>
#include <string.h>
#include <avr/io.h>
#include <Display.h>
#include <GlobalTime.h>
そして、これは機能します。
ただし、次のように再配置した場合:
#include <string.h>
#include <avr/io.h>
#include <Display.h>
#include <GlobalTime.h>
#include <stdint.h>
あなたが説明したエラーが表示されます。これは、Display.h
がstdint.h
からのものを必要とするが、Display.hがコンパイルされた後にその情報がコンパイルされるためアクセスできないためです。
したがって、stdint.h
をそれを必要とするライブラリの上に移動すると、エラーは発生しなくなります。