1

私は次のようなものを持っています:

#define BASE_FOLDER = "Resources"
#define PREFERENCE_FILE_NAME = "AppPreferences.txt"
#define SPLASH_FILE_NAME = "Splash.png"

#define PREFERENCE_PATH = ".\\" + BASE_FOLDER + "\\" + PREFERENCE_FILE_NAME
#define SPLASH_PATH = ".\\" + BASE_FOLDER + "\\" + SPLASH_FILE_NAME

コンパイラは、PREFERENCE_PATH が使用されている場所でエラーをスローしています。

expecting primary expression before = token.

これらはすべて、私がやっていたときに機能しました

#define PREFERENCE_PATH = ".\\Resources\\AppPreferences.txt"
#define SPLASH_PATH = ".\\Resources\\Splash.png"

私は何を間違っていますか?

4

2 に答える 2

6

等号を取り除きます。プリプロセッサ定義は等号を使用しません。

次に、プラスを取り除きます。文字列リテラルは、間にプラスを入れずに並べると連結されます。リテラルを強調します。これは、"foo" "bar"→のように二重引用符で囲まれたリテラルでのみ機能するコンパイル時の機能であるため"foobar"です。変数では機能しません。

#define BASE_FOLDER          "Resources"
#define PREFERENCE_FILE_NAME "AppPreferences.txt"
#define SPLASH_FILE_NAME     "Splash.png"

#define PREFERENCE_PATH ".\\" BASE_FOLDER "\\" PREFERENCE_FILE_NAME
#define SPLASH_PATH     ".\\" BASE_FOLDER "\\" SPLASH_FILE_NAME
于 2013-01-30T20:08:48.990 に答える
-2

そのようにC++で文字列(char *)を連結することはできません...+それらの演算子はありません。

于 2013-01-30T20:09:50.380 に答える