簡體   English   中英

在AVR G ++中禁用函數聲明錯誤

[英]Disable function declaration error in avr g++

我正在使用此Makefile來編譯我的Arduino草圖,其中的CPP和C標志如下

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文件時,如果在聲明函數之前使用了函數,則會出現致命錯誤。 我瀏覽了avr g ++選項 ,發現使用-Wimplicit-function-declaration選項可以啟用它。 還可以通過-Wall選項啟用它,該選項在make文件中使用。

我想啟用-Wall選項(因為它啟用了許多其他警告),但僅禁用-Wimplicit-function-declaration選項。

我檢查了文檔,但不知道如何執行此操作。 有人可以告訴我該怎么做嗎?

編譯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++

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,則需要將此預處理構建到arduino makefile項目中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM