Я использую этот 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- декларация разрешает это. Также он включается опцией -Wall, которая используется в make-файле.
Я хочу включить опцию -Wall (поскольку она включает множество других предупреждений), но отключить только опцию -Wimplicit-function-declaration.
Я проверил документацию, но не мог понять, как это сделать. Может ли кто-нибудь любезно сказать мне, как это сделать?
foo(0, 0);
, как он узнает, следует ли передавать нули как целые числа, указатели, числа с плавающей запятой или что-то еще? Черт возьми, объявление может быть дажеvoid foo(int, int, int = 0);
, и компилятор должен вызватьfoo
с тремя параметрами. Как он мог сгенерировать правильный код? - person David Schwartz   schedule 05.08.2012