Länge des String-Literals erhöhen

9

Ich habe viele String-Literale, die größer als 65535 Bytes sind. Ich darf diese Zeichenfolgen nicht in separaten Dateien speichern. Wie kann ich das String-Limit umgehen?

  

Ссылка

     
  • MSVC: 2048

  •   
  • GCC: Kein Limit (bis zu 100.000 Zeichen), gibt jedoch nach 510 Zeichen eine Warnung aus:

    %Vor%
  •   
    
MiP 24.07.2017, 08:30
quelle

4 Antworten

1

Diese großen Zeichenfolgen scheinen eher Ressourcen als Code zu sein, und ich würde den Ressourcenbereich einer Windows-Binärdatei (FindResource / LoadResource) und die Antwort auf die SO: Einbetten von Ressourcen in Linux ausführbare , um die gleichen Daten in Linux einzufügen.

    
mksteve 08.09.2017 07:05
quelle
0

Versuchen Sie es mit einem Array.

Ссылка

  

Die maximale Größe für ein Array wird durch size_t definiert. Definiert in der Header-Datei STDDEF.H ist size_t ein vorzeichenloser int mit dem Bereich 0x00000000 bis 0x7CFFFFFF.

    
The Techel 24.07.2017 11:10
quelle
0

Sie können die Textzeichenfolge in mehrere Zeichenfolgen aufteilen. Der folgende Code arbeitete an Visual Studio 2017:

%Vor%

Sie müssen die Textzeichenfolge in mehrere Zeilen schreiben:

%Vor%

Tatsächlich ist das maximale Limit in Visual C ++ 65535. Hier ist die Compiler-Fehlermeldung:

fataler Fehler C1091: Compilerlimit: Zeichenfolge überschreitet 65535 Bytes in der Länge

    
JazzSoft 25.07.2017 21:36
quelle
-3

Die Microsoft-Dokumentation sagt, dass die Verwendung von Verkettungen (dh Schreiben Mit "a" "b" "c" anstelle von "abc" ) können Sie das Limit auf ca. 64 KiB Bytes erhöhen. Aber das reicht für Ihren Anwendungsfall nicht aus.

Wenn nicht, können Sie die Zeichenfolge möglicherweise separat speichern und in einen Byte-Array-Initialisierer konvertieren, indem Sie xxd -i ( xxd comes with [vim](http://www.vim.org/)), and # include 'das verwenden, aber Sie müssen den Null-Terminator manuell hinzufügen).

    
Florian Weimer 24.07.2017 08:42
quelle