Southmountain Ответов: 2

Безопасно ли удалять эти охранники в заголовочных файлах visual C++/MFC?


Я портирую некоторые старые устаревшие приложения MFC в VC6++ и видел много таких охранников в заголовочных файлах:
#if !defined(AFX_MOUSER_H__66D9BBF5_DD8D_11D4_B7C9_0050DAB84384__INCLUDED_)
#define AFX_MOUSER_H__66D9BBF5_DD8D_11D4_B7C9_0050DAB84384__INCLUDED_

// code snippet in between

#endif // !defined(AFX_MOUSER_H__66D9BBF5_DD8D_11D4_B7C9_0050DAB84384__INCLUDED_)

Я знаю, что он используется AppWizard для редактирования кода. но теперь в Visual Studio 2017,
эти виды трюков в качестве охранных заявлений больше не используются. Я подтвердил свое понимание, создав приложение MFC на основе диалогового окна с помощью AppWizard.

Так что это безопасно для меня, чтобы удалить все старые охранники .H заголовочные файлы?
Какие-нибудь советы и рекомендации для этого есть?

Что я уже пробовал:

сделал несколько простых тестов, с помощью appwizard автоматически демо-приложения, это нормально.

2 Ответов

Рейтинг:
20

Richard MacCutchan

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

#pragma once


CPallini

5.

Рейтинг:
1

CPallini

Как Ричард заметьте, вы не можете просто удалить их, вы должны заменить их на
#pragma once прагма.
Чтобы добавить мои два цента к Ричардответ на этот вопрос (GCC документация):

#ПРАГМА один раз
Если #pragma один раз будет замечена при сканировании заголовочного файла, этот файл никогда не будет прочитан снова, несмотря ни на что. Это менее переносимая альтернатива использованию '#ifndef' для защиты содержимого заголовочных файлов от множественных включений.


Southmountain

спасибо, что поделились этим советом gcc!