world visual studio hello example compiler c++ string gcc visual-c++ compilation

example - hello world c++ visual studio 2017



Aumentar el lĂ­mite de longitud literal de cadena (4)

Tengo muchos literales de cadena que son más grandes que 65535 bytes. No puedo guardar estas cadenas para separar archivos, ¿cómo puedo solucionar el problema con el límite de cadena?

https://stackoverflow.com/a/11488682/7821462

  • MSVC: 2048

  • GCC: sin límite (hasta 100.000 caracteres), pero da advertencia después de 510 caracteres:

    String literal of length 100000 exceeds maximum length 509 that C90 compilers are required to support


Estas cadenas grandes parecen más recursos que código, y usaría la sección de recursos de un binario de Windows (FindResource / LoadResource) y la respuesta al SO: incrustando recursos en el ejecutable de Linux para insertar los mismos datos en Linux.



La documentación de Microsoft dice que usar la concatenación (es decir, escribir "a" "b" "c" lugar de "abc" ) le permite aumentar el límite a alrededor de 64 bytes KiB. Pero esto no es suficiente para su caso de uso.

De lo contrario, quizás pueda guardar la cadena por separado, convertirla en un inicializador de matriz de bytes usando xxd -i ( xxd comes with [vim](http://www.vim.org/)), and # include` eso (pero tendrás que agregar el terminador nulo manualmente).


Puede dividir la cadena de texto en varias cadenas. El siguiente código funcionó en Visual Studio 2017:

const char* p1 = "1234567890..."; // Very long (length > 65000) const char* p2 = "abcdefghij..."; // Very long (length > 65000) string s = p1; s += p2; cout << s.size() << endl;

Tienes que escribir la cadena de texto en varias líneas como:

const char* p = "This is a " "very long string...";

En realidad, el límite máximo en Visual C ++ es 65535. Aquí está el mensaje de error del compilador:

error fatal C1091: límite del compilador: la cadena supera 65535 bytes de longitud