Как я могу использовать include guard для библиотеки Arduino? - PullRequest
0 голосов
/ 16 февраля 2019

Почему сообщение напечатано дважды в Example.h?Разве #pragma once не должно это предотвратить?

Example.h:

#pragma once
#pragma message "Included"
Example.cpp:
#include "Example.h"

Test.ino:

#include "Example.h"

void setup() {}
void loop() {}

Вывод:

$ ~/Repositories/arduino-1.8.7/arduino --board arduino:avr:mega:cpu=atmega2560 --verify test/Test.ino`
Picked up JAVA_TOOL_OPTIONS: 
Loading configuration...
Initializing packages...
Preparing boards...
Verifying...
In file included from /home/ToBeReplaced/Test/test/Test.ino:1:0:
/home/ToBeReplaced/Arduino/libraries/example/Example.h:2:17: note: #pragma message: Included
 #pragma message "Included"
                 ^
In file included from /home/ToBeReplaced/Arduino/libraries/example/Example.cpp:1:0:
/home/ToBeReplaced/Arduino/libraries/example/Example.h:2:17: note: #pragma message: Included
 #pragma message "Included"
                 ^
Sketch uses 656 bytes (0%) of program storage space. Maximum is 253952 bytes.
Global variables use 9 bytes (0%) of dynamic memory, leaving 8183 bytes for local variables. Maximum is 8192 bytes.

1 Ответ

0 голосов
/ 16 февраля 2019

Включение средств защиты предотвращает включение одного и того же заголовка более одного раза в один и тот же модуль перевода / файл кода.
Два файла, каждый из которых компилируется отдельно, каждый из которых включает в себя заголовок с сообщением, каждый будет показывать сообщение, когда онискомпилировано.

Если вы включите заголовок с включенным охранником во второй раз в тот же файл, то он, тем не менее, покажет сообщение только один раз для этого файла.

...