Включить гвардейский синтаксис в C - PullRequest
0 голосов
/ 18 января 2012

Привет всем, кого я хочу задать вопрос о включении охранников в программировании на Си. Я знаю цель, но в некоторых кодах я видел "1", написанный после #define, например

#ifndef MYFILE_H
#define MYFILE_H 1

Какова цель этого "1"? Это необходимо ? Спасибо

Ответы [ 3 ]

6 голосов
/ 18 января 2012

Это не обязательно, #define MYFILE_H должен добиться цели.Тот факт, что MYFILE_H является определенным (условие, проверенное ifndef), отделен от его значения.Это может быть 0, '', 42 и т. Д.

1 голос
/ 18 января 2012

Нет необходимости, если макрос MYFILE_H не используется где-либо еще в вашем коде.

Если он используется в другом месте с директивой #ifdef или #ifndef, как здесь:

#ifdef MYFILE_H 

тогда 1 не требуется в определении макроса-

но если оно используется в другом месте с директивой #if, как здесь:

#if MYFILE_H

, тогда 1 (или любое значение != 0) требуется в определении макроса.

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

1 голос
/ 18 января 2012

Насколько я знаю, это стиль.Это «1» не является необходимым по моему мнению;это на самом деле ничего не делает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...