禁用avr g++中的函数声明错误

Disable function declaration error in avr g++

本文关键字:函数 声明 错误 avr g++ 禁用      更新时间:2023-10-16

我正在使用这个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函数声明启用了它。此外,它还由make文件中使用的-Wall选项启用。

我想启用-Wall选项(因为它启用了很多其他警告),但只禁用-Wimplicit函数声明选项。

我查看了文档,但不知道该怎么做。有人能告诉我怎么做吗?

编译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项目中。