It's a simple question, but I keep seeing conflicting answers: should the main routine of a C++ program return `0` or `EXIT_SUCCESS`?

```
#include <cstdlib>
int main(){return EXIT_SUCCESS;}

```

or

```
int main(){return 0;}

```

Are they the exact same thing? Should `EXIT_SUCCESS` only be used with `exit()`? 

I thought `EXIT_SUCCESS` would be a better option because other software may want to deem zero as failure, but I also heard that if you return `0`, the compiler is capable of changing it to a different value anyway.