Переносимый код wprintf для Linux и Windows - PullRequest
0 голосов
/ 30 апреля 2019

У меня есть код Windows, который нужно перенести на Linux.

Например, в Windows используется много функций wprintf_s.

wprintf_s(L"Not enough input parameters. See usage statement below.\n\n");

У нас нет wprintf_s в Linux,поскольку параметры одинаковы, я использую приведенный ниже оператор для преобразования wprintf_s в wprintf

#define wprintf_s wprintf

Но у меня возникла проблема, wprintf в Linux печатает только один символ для этого оператора.

wprintf_s(L"Failed to %u. [%s]: %s\n",
                ucID,
                GetStringErrorName(eError),
                GetStringErrorDescription(eError));

Изменение% s до% ls даст мне полную строку.Но это заставит меня добавить много ниже

#ifdef _WIN32 
wprintf_s(L"Failed to %u. [%s]: %s\n",
                    ucID,
                    GetStringErrorName(eError),
                    GetStringErrorDescription(eError)); 
#elif __linux__
wprintf_s(L"Failed to %u. [%ls]: %ls\n",
                    ucID,
                    GetStringErrorName(eError),
                    GetStringErrorDescription(eError)); 
#endif

Можете ли вы, ребята, предоставить лучший подход к этой проблеме.Спасибо.

...