2012-04-20 43 views
0

內容我想這樣做在C++以下:assignfile經由#包括以字符數組

static const char* data[] = { #include "mydata.hh" }; 

其中mydata.hh的內容應該被指定爲字符數組數據。 我嘗試過#include的各種變體和(一級和兩級)字符串化,通過#x。目前爲止沒有工作。這實際上是可能的還是我錯過了什麼?

提前感謝。

回答

8

您可以:

static const char* data[] = { // <--- new line 
#include "mydata.hh" 
}; // <--- don't forget semi-colon 

但是,爲什麼?

這一切都是假設mydata.hh含有一種與聲明兼容:

//mydata.hh 
"bla", "goo", "foo" 
+0

謝謝。但我的標題只包含沒有引號的文本。我在帖子中忘記了分號。 – litro 2012-04-20 21:25:53

+0

@litro在這種情況下,沒有。 – 2012-04-20 21:28:48

+0

因此,沒有辦法對include的結果應用stringify宏? – litro 2012-04-20 21:36:28

0

預處理程序僅適用於與可選的空白開始,#所以你需要將#include在單獨一行語句。

實施例:

static const char* data[] = { 
#include "mydata.hh" 
}; 
0

圍繞包括指令的斷開線。所有的字符都必須用「標題」內的逗號分隔。然後你的代碼將被成功編譯。雖然我確信這種編程風格看起來很糟糕。

+0

我同意它不會是一個美麗的。雖然我的數據文件不包含引號。我會很好,雖然有一個非數組const char。 – litro 2012-04-20 21:32:53

0

我認爲重點是#代碼的預處理器外觀,然後執行指令,即#之間的點,您可以嘗試將#include「」作爲孤行行。考慮到,預處理只是一個文本解析器

static const char* data[] = { 
     #include "mydata.hh" 
}