內容我想這樣做在C++以下:assignfile經由#包括以字符數組
static const char* data[] = { #include "mydata.hh" };
其中mydata.hh的內容應該被指定爲字符數組數據。 我嘗試過#include的各種變體和(一級和兩級)字符串化,通過#x。目前爲止沒有工作。這實際上是可能的還是我錯過了什麼?
提前感謝。
內容我想這樣做在C++以下:assignfile經由#包括以字符數組
static const char* data[] = { #include "mydata.hh" };
其中mydata.hh的內容應該被指定爲字符數組數據。 我嘗試過#include的各種變體和(一級和兩級)字符串化,通過#x。目前爲止沒有工作。這實際上是可能的還是我錯過了什麼?
提前感謝。
您可以:
static const char* data[] = { // <--- new line
#include "mydata.hh"
}; // <--- don't forget semi-colon
但是,爲什麼?
這一切都是假設mydata.hh
含有一種與聲明兼容:
//mydata.hh
"bla", "goo", "foo"
預處理程序僅適用於與可選的空白開始,#
所以你需要將#include在單獨一行語句。
實施例:
static const char* data[] = {
#include "mydata.hh"
};
圍繞包括指令的斷開線。所有的字符都必須用「標題」內的逗號分隔。然後你的代碼將被成功編譯。雖然我確信這種編程風格看起來很糟糕。
我同意它不會是一個美麗的。雖然我的數據文件不包含引號。我會很好,雖然有一個非數組const char。 – litro 2012-04-20 21:32:53
我認爲重點是#代碼的預處理器外觀,然後執行指令,即#之間的點,您可以嘗試將#include「」作爲孤行行。考慮到,預處理只是一個文本解析器
static const char* data[] = {
#include "mydata.hh"
}
謝謝。但我的標題只包含沒有引號的文本。我在帖子中忘記了分號。 – litro 2012-04-20 21:25:53
@litro在這種情況下,沒有。 – 2012-04-20 21:28:48
因此,沒有辦法對include的結果應用stringify宏? – litro 2012-04-20 21:36:28