C++で次のことをしたいと思います:
static const char* data[] = { #include "mydata.hh" };
mydata.hh の内容は、char 配列として data に割り当てられるはずです。#include の #x を介して、さまざまなバリアントと (1 レベルと 2 レベルの) 文字列化を既に試しました。これまでのところ、どれも機能しませんでした。これは実際に可能ですか、それとも何か見逃しましたか?
ありがとうございます。
あなたはできる:
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"
};
Break lines around the include directive. All your chars must be separated with comma inside "header". Then your code will be compiled successfully. Although I am sure such kind of programming style looks awful.
ポイントは、プリプロセッサが # コードを探してからディレクティブを実行することだと思います。 # の間にあるポイントでは、 #include "" を孤独な行として残してみてください。考慮してください、前処理は単なるテキストパーサーです
static const char* data[] = {
#include "mydata.hh"
}