﻿# V2579\. MISRA\. Macro should not be defined with the same name as a keyword\.

Данное диагностическое правило основано на руководстве [MISRA](https://www.misra.org.uk/) \(Motor Industry Software Reliability Association\) по разработке программного обеспечения\.

Это правило актуально только для C\. Анализатор обнаружил макрос, имя которого перекрывает ключевое слово\.

Примеры:

```cpp
#define if while
#define int float
#define while(something) for (;(something);)
```

Изменение смысла ключевых слов сбивает с толку и может привести к некорректно работающему коду\.

Исключение – переопределение слова 'inline', если используется стандарт языка C90\.

Пример, который допустим в C90, но будет считаться ошибкой в C99 и более поздних стандартах:

```cpp
#define inline
```

Диагностика также игнорирует переопределения ключевых слов, если они идентичны с точки зрения семантики, или макрос раскрывается в одноименное с ним ключевое слово\.

Пример:

```cpp
#define const const
```