wcslen是否是ISO/IEC 14882:2003 C++;标准图书馆? < >在Windows下移植C++程序从32到64位时,不支持支持TySLEN,而应该使用StLLIN/WCSLEN(非Unicode/Unicode)。我开始怀疑 < WLSLIN是ISO/IEC 1488·2003—C++标准库的一部分。我看到这个函数既受g++支持,也受VC++支持。此外,我在中发现了一个参考,说明此参考页上描述的功能与ISO C标准一致,但没有提及其C89或c99 是否有文件证明_tcslen与Win64不兼容?就连这句话也没有暗示什么 对于Unicode,是否会无意中使用wcslen而不是tcslen 是的。第21.4节中的表48给出了作为中声明的函数之一的wcslen \u tcslen在执行x64生成时也可用 只要定义了\u UNICODE,那么\u tcslen将扩展到wcslen。使用\u tcslen的唯一好处是,理论上,您可以通过拨动开关对应用程序进行ANSI构建;实际上,您不会从中获得任何好处(2012年的ANSI版本简直是糟糕透顶的IMHO),并且需要实际的工作才能使您的版本双向运行。我不推荐
ISO/IEC 14882:2003(E),第21章,表48,p。412wcslen是否是ISO/IEC 14882:2003 C++;标准图书馆? < >在Windows下移植C++程序从32到64位时,不支持支持TySLEN,而应该使用StLLIN/WCSLEN(非Unicode/Unicode)。我开始怀疑 < WLSLIN是ISO/IEC 1488·2003—C++标准库的一部分。我看到这个函数既受g++支持,也受VC++支持。此外,我在中发现了一个参考,说明此参考页上描述的功能与ISO C标准一致,但没有提及其C89或c99 是否有文件证明_tcslen与Win64不兼容?就连这句话也没有暗示什么 对于Unicode,是否会无意中使用wcslen而不是tcslen 是的。第21.4节中的表48给出了作为中声明的函数之一的wcslen \u tcslen在执行x64生成时也可用 只要定义了\u UNICODE,那么\u tcslen将扩展到wcslen。使用\u tcslen的唯一好处是,理论上,您可以通过拨动开关对应用程序进行ANSI构建;实际上,您不会从中获得任何好处(2012年的ANSI版本简直是糟糕透顶的IMHO),并且需要实际的工作才能使您的版本双向运行。我不推荐,c++,windows,linux,64-bit,strlen,C++,Windows,Linux,64 Bit,Strlen,ISO/IEC 14882:2003(E),第21章,表48,p。412wcslen() 本标准未提及tcslen()或\u tcslen()。这些似乎是微软的扩展。如果它们与您的目标平台不兼容,且标准中未提及,则最好坚持使用wcslen() 仅供参考:以下划线开头的符号通常表示实现细节。通过在tcslen前面加下划线,您的工具链开发人员可能会警告您,\u tcslen()可能会在将来的版本中消失。看来这正是发生在你身上的事 当我没有好的选择时,我也偶尔使用带下划线的特性;但是,每当我更改工具链
wcslen()
本标准未提及tcslen()
或\u tcslen()
。这些似乎是微软的扩展。如果它们与您的目标平台不兼容,且标准中未提及,则最好坚持使用wcslen()
仅供参考:以下划线开头的符号通常表示实现细节。通过在tcslen
前面加下划线,您的工具链开发人员可能会警告您,\u tcslen()
可能会在将来的版本中消失。看来这正是发生在你身上的事
当我没有好的选择时,我也偶尔使用带下划线的特性;但是,每当我更改工具链时,我必须更新我的代码。所以,通常,标准是最好的
祝你好运。其他人已经回答了你的第一个问题(答案是“是”),所以我将回答另外两个问题:
2) \u tcslen与Win64完全兼容
3) 如果您处理一些TCHAR
值字符串(例如LPTSTR
或LPCTSTR
),但没有定义\u UNICODE
,则使用wcslen
而不是\u tcslen
是错误的。如果未定义\u UNICODE
,TCHAR
扩展为char
,因此LPTSTR
是char*
,无法传递到wcslen
。因此编译器会呕吐
请参阅上的备注部分,了解有关tcslen扩展内容的一些讨论。谢谢。这回答了我的第一个问题。期待我的问题的其余部分。谢谢你的投入。我知道对于ANSI/UNICODE,tcslen的扩展是如何不同的。我刚才看到的这段代码保证只针对UNICODE执行,因此我期待着用wcslen安全地替换_tcslen。谢谢。这回答了我的第一个问题。期待我问题的其余部分。\u tcslen
只是对wcslen
或strlen
的定义,这取决于是否定义了\u UNICODE
。您可以随时复制tchar.h或制作自己的版本,以便在任何平台上运行。如果它不起作用,您可能只需要包含tchar.h。