I was reading K&R book. I read:

> 
> ...name intended for use only by functions of the standard library
>  begin with `_` so they are less likely to collide with the names in
>  the user program...
> 
> 
> 

What does this exactly means please explain real simple and practical way.

What i understood is: 

if i want to use sqrt defined in math.h then 

```
#include <math.h>
#define sqrt(x) x*x*x

main() 
{ 
int x=4; 
_sqrt(x); // That is from the header file math.h
sqrt(x); // my own defined macro 
/*or its the reverse way _sqrt for my own defined macro so it won't collide with original sqrt i.e. without _ for sqrt from math.h */ 
return 0;
}

```

Now, I read a code on stackoverflow using `__`. sys/syscall.h is not present in windows so we have to use

```
#if __linux 
#include <sys/syscall.h>
#elif defined(_WIN32) || defined(_WIN64)
#include <windows.h>
#endif

```

Where exactly is `__` used and what's the difference b/w `__` & `_`.
 enter code here