Präprozessor-Makro: Zeichenkette beschneiden

Gast #3616952
Lesenswert?
• ▲
▼
Nein, der Präprozessor kann kein String split. Warum geht sowas nicht:
1
__attribute__((constructor)) void init_version_string() {
2
  static char version_[21];
3
  snprintf(version_, sizeof(version_), "%s", _VERSION_);
4
}
?
Gast #3617424
Lesenswert?
• ▲
▼
In C++11 gehts: http://ideone.com/qeD0qD

Der Compiler führt das Zuschneiden statisch zur Compile-Zeit durch. Die 
Variablen 'x', 'y' enthalten direkt den zugeschnittenen String (wie ein 
C-Array) (ohne dynamische Speicher-Verwaltung). Es wird nur der gekürzte 
String im Kompilat gespeichert (keine Speicherverschwendung), aber mit 
Null-Byte (könnte man auch weglassen).
Zum Testen werden die Strings ausgegeben.

Wenn du momentan C verwendest, kompiliere mit "g++ -std=c++11" statt 
"gcc" und der Code funktioniert.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.