编译期间MSVC中的字符串长度限制

String length limit in MSVC during compile?

本文关键字:字符串 长度限制 MSVC 编译      更新时间:2023-10-16

我正在将c++代码从Linux转换到windows(使用Visual Studio 2013)。但是MSVC对字符串有长度限制(大约2048字节?),而GCC没有。我的问题是,有一个配置文件包含几个巨大的字符串,它在GCC下工作得很好。但是MSVC报告编译错误为

错误C2026:字符串太大,末尾字符被截断。

字符串很简单,CONFIGSTRING很大。

const std::string CONFIGSTRING="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";

这个问题有什么解决办法吗?我可以在windows下使用GCC单独编译配置文件到对象文件并将其链接到其他文件吗?如果可能的话,谁能简单地告诉我怎么做?

根据MSDN文档,这应该可以工作:

const std::string str =
  "xxxx" // Max 2048 bytes
  "xxxx" // Max 2048 bytes
         // ... and so on (up to 65535 bytes)
  ;

如果这仍然不够,那么:

std::string str;
str = "part1";
str += "part2";
str += "part3"; // And so on.

我可以在windows下使用GCC将配置文件单独编译为对象文件并链接到其他文件吗?