When using #ifndef for #include guards:
make sure that #ifndef and #define are the first lines of the archive!
I had placed some comments before them and that made me lose several hours, trying to find out why class forward declarations didn't work as they should. One could expect the compiler to ignore comments automatically but that's not the case.
I also looked for something as #pragma once for GCC, since I remembered that from when I used Visual C++, but although it was supported at some time, it is now deprecated, so the only solution is placing the #ifndef where it must be (at the very beginning).