在Windows下将C++程序从32位移植到64位时,我意识到不支持_tcslen,而应使用strlen/wcslen(用于非unicode/unicode)。我开始怀疑

  • 如果wcslen是ISO/IEC 14882:2003 C++标准库的一部分。我看到g++和VC++都支持此功能。同样在open group中,我找到了一个说明The functionality described on this reference page is aligned with the ISO C standard的引用,但没有提及它的C89还是c99。
  • 是否在某处记录了_tcslen与Win64不兼容?甚至MSDN Link也没有暗示任何东西。
  • 对于Unicode,可以不经意使用wcslen而不是_tcslen吗?
  • 最佳答案

  • 是的。 21.4节中的表48给出了wcslen作为<cwchar>中声明的功能之一。
  • 进行x64构建时,
  • _tcslen也可用。
  • 只要定义了_UNICODE_tcslen就会扩展为wcslen。使用_tcslen唯一获得的好处是,从理论上讲,您可以通过翻转开关来建立应用程序的ANSI版本。实际上,您没有从中获得任何 yield (2012年的ANSI版本简直是残酷的恕我直言),并且需要实际工作才能使您的双向构建都可行。我不推荐它。
  • 09-08 01:27