Я создаю программу и хочу, чтобы она работала в Windows и UNIX. Однако я использовал много функций, специфичных для Windows или Unix. Например, функции, расположенные в #include<unistd.h>
и #include <sys/utsname.h>
для UNIX и #include <winsock2.h>
и #include <windows.h>
для Windows. У меня они работают независимо, но я хочу объединить их.
Вот пример:
struct timespec start, end; // UNIX code
LARGE_INTEGER clockFrequency; // Windows code
QueryPerformanceFrequency(&clockFrequency);
LARGE_INTEGER startTime;
LARGE_INTEGER endTime;
LARGE_INTEGER elapsedTime;
//...
QueryPerformanceCounter(&startTime); // Windows code
clock_gettime(CLOCK_REALTIME, &start); // UNIX code
CalculateVectorInputs();
QueryPerformanceCounter(&endTime); // Windows code
clock_gettime(CLOCK_REALTIME, &end); // UNIX code
Я хорошо знаю ifdef
:
#ifdef _WIN32
// Windows code
#else
#ifdef __unix__
// UNIX code
#endif
#endif
но это кажется очень грязным, чтобы добавлять все в мой код, поскольку моя программа имеет длину около 500 строк. Есть ли элегантный способ подойти к этому?