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 回答