2012-12-16 10 views
5

Ich möchte große Sätze von Daten (Integer-Arrays unterschiedlicher Länge, eine Bibliothek von Textzeichenfolgen usw.) direkt in eine ausführbare Datei kodieren, so dass es keine zusätzlichen Dateien gibt.Große Datei in ausführbare Datei kodieren?

Meine Frage ist, was ist die praktischste und organisierte Methode, dies in C++ zu tun? Wo würde ich die Daten in Kopf- oder Quelldateien platzieren? Welche Struktur sollte ich verwenden?

Ich weiß, dies ist nicht der akzeptierte Umgang mit Daten. Aber Humor mich!

+0

Habe das schon auf SO gesehen ... vorschau. – djechlin

+0

versuchen Sie es in eine andere .cpp-Datei, zum Beispiel, 'resources.cpp', dann machen Sie es' extern' und geben Sie ihm eine Header-Datei. –

+0

http://stackoverflow.com/questions/410980/include-a-text-file-in-a-c-program-as-a-char verwandt, nicht genau das, was ich gesucht habe. – djechlin

Antwort

8

Für C++ und C können Sie Header-Datei verwenden, um Deklarationen für diese Variablen zu setzen, und dann tatsächlichen Initialisierungscode in .c (oder .cc) -Datei platzieren. Sowohl C als auch C++ haben eine anständige Initialisierungssyntax. Zum Beispiel:

mydata.h:

extern int x; 
extern int a[10]; 
extern unsigned char *s; 

mydata.c:

#include "mydata.h" 
int x = 123; 
int a[10] = {1,2,3,4,5,6,7,8,9,10}; 
unsigned char *s = "mystring"; 

dann main.c haben:

#include "mydata.h" 
#include <stdio.h> 

int main(const int argc, char *argv[]) 
{ 
    printf("%d, %d, %s\n", x,a[5],s); 
} 

Testlauf wie folgt aussieht:

$gcc -o main main.c mydata.c 
$ ./main 
123, 6, mystring 

Jetzt, um wirklich organisiert zu werden, würde man Perl/Python/PHP-Skript schreiben, um solche gebildeten Dateien aus Ihren Datenquellen zu generieren, wie SQL-Datenbank von CSV-Dateien.

Verwandte Themen