C 中 _tmain() 和 main() 之间的区别
在 C 中,标准程序入口点是 main(),它接受以下签名之一:
int main(); int main(int argc, char* argv[]);
但是,Microsoft 引入了一个名为wmain(),它将第二个签名替换为:
int wmain(int argc, wchar_t* argv[]);
为了简化 Unicode (UTF-16) 与其多字节字符集之间的转换,微软还定义了 _tmain(),当启用 Unicode 时,编译为 wmain,否则编译为 main()。
字符之间的差异处理
示例中 main() 和 _tmain() 之间的差异是由于 main() 的错误使用造成的。 wmain() 被设计为接受 wchar_t 参数,而 main() 则接受 char。由于编译器在强制执行 main() 的正确类型方面不严格,因此程序将 wchar_t 字符串数组解释为 char 字符串。
在 UTF-16 中,ASCII 字符表示为一对字节,其中ASCII 值后跟一个空字节。由于 x86 CPU 是小端字节序,因此这些字节会被交换。因此,在以 null 结尾的 char 字符串中,您的程序会看到一系列字符串,每个字符串都是一个字节长。
Windows 编程选项
何时使用 Windows 编程时,可以使用三个主要选项:
需要注意的是,这些 Microsoft 特定的扩展不符合 C 标准,因此可能不受其他平台支持。
以上是C Windows 编程中 `main()` 和 `_tmain()` 有什么区别?的详细内容。更多信息请关注PHP中文网其他相关文章!