2

私はこのMakefileを使用して、CPPとCの次のフラグを持つArduinoスケッチをコンパイルしています

CPPFLAGS      += -mmcu=$(MCU) -DF_CPU=$(F_CPU) -DARDUINO=$(ARDUINO_VERSION) \
            -I. -I$(ARDUINO_CORE_PATH) -I$(ARDUINO_VAR_PATH)/$(VARIANT) \
            $(SYS_INCLUDES) $(USER_INCLUDES) -g -Os -w -Wall \
            -ffunction-sections -fdata-sections
CFLAGS        = -std=gnu99
CXXFLAGS      = -fno-exceptions

cppファイルをコンパイルするときに、関数が宣言される前に使用されると、致命的なエラーが発生します。私はavrg++オプションを調べたところ、オプション-Wimplicit-function-declarationがそれを有効にしていることがわかりました。また、makeファイルで使用される-Wallオプションによって有効になります。

-Wallオプションを有効にしたい(他の多くの警告を有効にするため)が、-Wimplicit-function-declarationオプションのみを無効にします。

ドキュメントを確認しましたが、これを行う方法がわかりませんでした。誰かが親切にそれを行う方法を教えてもらえますか?

4

2 に答える 2

8

C ++コードをコンパイルするときにそのエラーを無効にすることはできません。これは致命的なエラーであり、警告ではありません。

Cコード(を使用-Wno-implicit-function-declaration)ではそれを回避できます(ただし、回避すべきではありません)が、C++では機能しません。

cc1plus: warning: command line option "-Wno-implicit-function-declaration" 
                  is valid for C/ObjC but not for C++
于 2012-08-05T12:07:00.807 に答える
0

参照する; http://arduino.cc/en/Main/FAQ#.UyUa8vmSz99

引用

実際、あなたはすでにそうです。Arduino言語は、コードから呼び出すことができるC /C++関数のセットにすぎません。スケッチは小さな変更(関数プロトタイプの自動生成など)を受けてから、C / C ++コンパイラ(avr-g ++)に直接渡されます。

より詳しい情報; http://arduino.cc/en/Hacking/BuildProcess#.UyUa6vmSz98

Windows arduino IDEは、関数宣言のプロトタイプをコンパイラに渡す前に前処理します。

arduino IDEを複製する場合は、この前処理をarduinomakefileプロジェクトに組み込む必要があります。

于 2014-03-16T03:45:57.603 に答える