Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
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),并且需要实际的工作才能使您的版本双向运行。我不推荐_C++_Windows_Linux_64 Bit_Strlen - Fatal编程技术网

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),并且需要实际的工作才能使您的版本双向运行。我不推荐

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),并且需要实际的工作才能使您的版本双向运行。我不推荐,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()可能会在将来的版本中消失。看来这正是发生在你身上的事 当我没有好的选择时,我也偶尔使用带下划线的特性;但是,每当我更改工具链

ISO/IEC 14882:2003(E),第21章,表48,p。412
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。