Можем ли мы использовать функции wmain () с компиляторами Unix, или это будет работать только на Windows? - PullRequest
10 голосов
/ 13 марта 2010

Можем ли мы использовать функции wmain () с компиляторами Unix, или это будет работать только на \ для windows?

Ответы [ 3 ]

10 голосов
/ 13 марта 2010

Подпись wmain существует в Windows для обработки аргументов командной строки с широкими символами. Как правило, в то время как приложения Windows предпочитают UTF16, приложения Unix предпочитают UTF8 для строкового кодирования Unicode. UTF8 использует обычные char символьные строки, поэтому стандартной подписи main достаточно для приложений Unix с поддержкой Unicode.

Если вы хотите создать портативное консольное приложение, которое не требует параметров командной строки Unicode, используйте main. Если вам нужны параметры командной строки Unicode, то вам нужны директивы препроцессора, которые позволят использовать сигнатуру, подходящую для каждой среды.

Если вы создаете кроссплатформенное приложение с графическим интерфейсом, используйте специальный фреймворк, такой как QT.

10 голосов
/ 13 марта 2010

Единственные стандартные подписи для main:

int main(void);
int main(int argc, char *argv[]);

Однако автономная реализация может предоставлять расширения / разрешать другие подписи. Но они не гарантируют портативность. wmain выглядит как Windows / VS. Нет особых шансов, что это будет работать на * nix / GNU GCC.

2 голосов
/ 13 марта 2010

wmain () зависит от Windows. Точно так же, как _tmain, если это имеет значение ...

...