I'm currently developing a cross-platform C application.
Is there any compiler macro which is defined only during compilation on Windows, so I can #ifdef
some Windows specific #includes?
Typical example is selecting between WinSock and Berkeley sockets headers:
#ifdef _WINDOWS
#include <winsock.h>
#else
#include <sys/socket.h>
#include <netinet/in.h>
#include <sys/un.h>
#include <arpa/inet.h>
#include <netdb.h>
#endif
So the thing I'm looking for is something like that _WINDOWS macro.
Type “gcc –version” in command prompt to check whether C compiler is installed in your machine.
So if you ever need to check the version of the GCC C++ compiler that you have installed on your PC, you can do it through the command prompt by typing in the single line, g++ --version, and this will return the result.
To check if you have it installed, you can type cc or gcc at the command prompt. If for some reason it is not installed on your system, you can download it from gcc.gnu.org/install.
To check the operating system of the host in a C or C++ code, we need to check the macros defined by the compiler (GNU GCC or G++). For example, on Windows platform, the compiler has a special macro named _WIN32 defined. So, if the macro _WIN32 is defined, we are on Windows.
Your best bet is to use
_WIN32
It is guaranteed to be defined when compiling for a 32-bit or 64-bit Windows platform using the Visual C++ compiler. I would expect other compilers for Windows to define it as well (the Intel C++ compiler defines it, as does the MinGW gcc).
Use _WIN32
.
Reference:
__APPLE__
)_WIN32
Defined for applications for Win32 and Win64. Always defined.
_WIN64
Defined for applications for Win64.
Source : Lists the predefined ANSI C and Microsoft C++ implementation macros.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With