#define identifier [token-string]
或
#define identifier LPAREN parameters RPAREN
#define 允许您定义一个符号,这样,在 #ifdef 指令中使用该符号作为表达式时,表达式的值为 true,而在 #ifndef 指令中使用该符号作为表达式时,表达式的值为 false。
#define 还允许您为一个标记字符串定义一个符号名称,这样您就可以在代码中使用该符号名称,预处理器将用您指定的标记字符串替换该名称的所有出现。
例如
#define DEBUG
// ...
#if DEBUG
Console.WriteLine("Debug version");
#endif
或
#define VERSION "1.2.0.0"
#define FILEVERSION "1.2.3.4"
// ...
[assembly: AssemblyVersion(VERSION)]
[assembly: AssemblyFileVersion(FILEVERSION)]
#define MAX(a,b) iif(a>b, a, b)
将被视为 #translate。
请注意,定义是大小写敏感的,因此以下代码可以正常工作:
#define TEST 123
FUNCTION Test() AS INT
RETURN TEST
但这将无法编译:
#define TEST 123
FUNCTION TEST() AS INT
RETURN TEST
因为预处理器会将 FUNCTION 行中的名称 TEST 替换为 123,而 123 并不是有效的标识符。经过预处理后,代码变为
FUNCTION 123() AS INT
RETURN 123