In header files I've seen two main ways for defining macro to avoid including the file more than once.

1.

```
#ifndef SOME_CLASS
#define SOME_CLASS
//code ...
#endif

```

2.

```
#ifndef SOME_CLASS
//code...
#define SOME_CLASS
#endif

```

Which is more preferable and why?
['https://Stackoverflow.com/questions/6123544', 'https://Stackoverflow.com', 'https://Stackoverflow.com/users/509233/']
The first option is commonly optimized by compilers to behave like the non-standard `#pragma once`.

It is also safer in case of recursive includes. If, in the `//code...` part, you include another header which includes .... which includes the header you're currently editing, then the second version won't work.
I prefer the first option. Suppose you include more files, and these files in turn include the file containing `#ifndef SOME_CLASS`. 

I think it's fairly easy to spot include errors, if the `#define SOME_CLASS` isn't adjacent to `#ifndef SOME_CLASS`.

```
// SomeClass.h
#ifndef SOME_CLASS
#include "OtherFile.h" // will eventually lead to #include "SomeClass.h"
#define SOME_CLASS

... boat load of code here...

#endif // SOME_CLASS

```