0

C++で次のことをしたいと思います:

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

mydata.hh の内容は、char 配列として data に割り当てられるはずです。#include の #x を介して、さまざまなバリアントと (1 レベルと 2 レベルの) 文字列化を既に試しました。これまでのところ、どれも機能しませんでした。これは実際に可能ですか、それとも何か見逃しましたか?

ありがとうございます。

4

4 に答える 4

8

あなたはできる:

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

しかし、なぜ?

mydata.hhこれはすべて、宣言と互換性のあるものが含まれていることを前提としています。

//mydata.hh
"bla", "goo", "foo"
于 2012-04-20T21:21:42.230 に答える
0

プリプロセッサは、オプションの空白で始まるステートメントでのみ機能する#ため、#include を別の行に配置する必要があります。

例:

static const char* data[] = {
#include "mydata.hh"
};
于 2012-04-20T21:23:40.253 に答える
0

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.

于 2012-04-20T21:26:26.790 に答える
0

ポイントは、プリプロセッサが # コードを探してからディレクティブを実行することだと思います。 # の間にあるポイントでは、 #include "" を孤独な行として残してみてください。考慮してください、前処理は単なるテキストパーサーです

static const char* data[] = { 
        #include "mydata.hh" 
}
于 2012-04-20T21:27:12.273 に答える