My application must compile with GCC C++, MSVC C++, Intel C++ on both Linux and Windows.
I would prefer to settle on one means of specifying the types of various byte-sized integers, both signed and Unsigned (1, 2, 4, 8 bytes). The problem is that there appears to be no formal agreement as to how attain portability. While I do not mind having a header that includes the appropriate platform and compiler headers, I keep getting bitten by making the "new and improved" version where the header files change (location or name), and/or the compiler defined types change.
As to if they are __int8, int8_t, BYTE, ...
I really do not care, as long as there is a consistent way of doing this.
In particular, one cannot rely on int being 32-bits or 64-bits as well as long long being 64-bits.
Using Windows, VS 2010 with Parallel Studio 2011 __int64 highlights blue in both MS VC++ and Intel C++ but is not known in MS VC++. Which is odd, since MS "invented" the __int64 type. This intermittently works depending on the headers included.