karljacques/Teabag — pull request #1 by TheComet93 (2014-08-23 17:37:58+00:00)
Title: Got it to compile on Linux

Some things to note for the future, to make your code more linux proof.

Including Headers
----------------------
Header files are case sensitive on Linux. I changed a lot of ```#include "Event.h"``` to ```#include "event.h"```

Shared libraries
--------------------
On unix systems (mac included), there isn't really anything like a "debug build". A shared object built using release settings will still link against your game if you're building in debug mode. For this reason, Linux also doesn't have any **_d** suffixes.

Debug macro
-----------------
**_DEBUG** is the official identifier declared when the build type is debug.

rvalue references
----------------------
MSVC apparently bends the rules a little when passing non-const rvalue references around. The following code is illegal, but MSVC will compile it anyway.
```
struct Foo {};
void bar(Foo x) {}
int main()
{
bar(Foo());
return 0;
}
```
Output:
```
main.cpp:5:11: error: invalid initialization of non-const reference of type ‘Foo&’ from an rvalue of type ‘Foo’
bar(Foo());
^
```