Southmountain Ответов: 1

Об истории подразделе, посвященном атрибуту _msc_ver макрос для Visual С++


недавно я начал просматривать некоторые устаревшие коды и часто вижу это состояние в заголовочных файлах:

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000


Я пропустил некоторую часть истории Visual C++ или Visual Studio.
Я думаю, что могу смело заменить этот макрос-оператор на:
#pragma once


могут ли какие-либо гуру разделить происхождение такого рода макро-утверждения?

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

Я удалил оператор #if и не имею никаких проблем.

1 Ответов

Рейтинг:
9

Daniel Pfeffer

_MSC_VER-это предопределенный макрос, специфичный для Microsoft. Версии компилятора Microsoft C/C++ ранее 10 (Visual Studio 2010, IIRC) не поддерживали эту прагму и выдавали предупреждающее сообщение "непризнанная ПРАГМА" или что-то подобное. Единственная цель макросохранителя-избежать этого сообщения.

Если вы ориентируетесь на более поздние версии Microsoft C/C++, вы можете удалить защиту макросов.


Southmountain

Большое спасибо!

BongoVR

В соответствии с https://dev.to/yumetodo/list-of-mscver-and-mscfullver-8nd, _MSC_VER = 1000 относится к первому 32-битному компилятору от Microsoft (Visual Studio 4.0) с середины 1990-х годов. Таким образом, действительно безопасно удалить макрос.

Southmountain

спасибо Вам за ссылку!