2014-01-10 50 views
8

我正在交叉編譯裸機環境的程序,我希望使用存儲在文件中的數據填充數組。在編譯期間有沒有辦法讀取它?在編譯時從文件中填充數組

原因:將數據粘貼到源代碼中似乎很難看。構建過程的

+0

您可以編寫一個「驅動程序」程序來生成源文件。它會從文件中讀取數據並將其插入源文件。 – 2014-01-10 11:55:06

+1

您可以將'xxd -i'或'objcopy'集成到您的版本中。見http://stackoverflow.com/questions/1155578/which-program-creates-a-c-array-given-any-file –

+0

我不確定,但你可以看看'constexpr'在c + + 11。 – holgac

回答

6

部分可以運行一個程序,它取文件作爲輸入並生成將其定義爲一個陣列的C++源文件,是這樣的:

char arrayFromFile[] = { 
    0x01, 0x02, 0x99, ... and so on 
}; 

程序本身可以是部分的源代碼。

然後在編譯週期稍後編譯該程序。例如,您可能有以下makefile段:

generate: generate.cpp 
    g++ -o generate generate.cpp # build data generator 

data.cpp: data.dat 
    generate data.dat >data.cpp  # create c file with data 

prog: prog.cpp data.cpp 
    g++ -o prog prog.cpp data.cpp # create program from source and data 
+0

+1更多的努力(比我的)。 – hmjd