﻿# V3547\. AUTOSAR\. Identifiers that start with '\_\_' or '\_\[A\-Z\]' are reserved\.

This diagnostic rule is based on the software development guidelines developed by [AUTOSAR](https://www.autosar.org/) \(AUTomotive Open System ARchitecture\)\.

As defined by the C\+\+ standard, macro names and identifiers that contain the '\_\_' sequence anywhere or begin with '\_\[A\-Z\]' are reserved for use in the language and standard library implementation\. The same rule applies to the C language as well, except that the '\_\_' sequence should be at the beginning of a reserved identifier\.

Declaring such identifiers outside the standard library may cause problems\. For example, this code:

```cpp
#define _BUILTIN_abs(x) (x < 0 ? -x : x) 
#include <cmath>
int foo(int x, int y, bool c)
{
  return abs(c ? x : y)
}
```

may change the behavior of the 'abs' function if this function is implemented through the use of the compiler's built\-in \(intrinsic\) function as follows:

```cpp
#define abs(x) (_BUILTIN_abs(x))
```