#define 用 法 集 锦用 法 集 锦 [[修 正 版修 正 版 ]]DefinitionDefinition[[定 义定 义 ]]:The#defineDirectiveYoucanuse the#definedirectiveto givea meaningfulname to aconstantin yourprogram.Thetwoformsof thesyntaxare:Syntax#defineidentifiertoken-stringopt#defineidentifier[(identifieropt,...,identifieropt)]token-stringoptUsageUsage[[用 法用 法 ]]:1.简单的 define定 义#defineMAXTIME1000一个简单的 MAXTIME就定 义 好了,它代表 1000,如果在程序里面写if(i(y)?(x):(y);这个定 义 就将返回两个数中较大的那个,看到了吗?因为这个“函数”没有类型检查,就好像一个函数模板似的,当然,它绝对没有模板那么安全就是了。可以作为一个简单的模板来使用 而已。但是这样做的话存在隐患,例子如下:#defineAdd(a,b)a+b;在一般使用 的时候是没有问题的,但是如果遇到如: c*Add(a,b)*d 的时候就会出现问题,代数式的本意是 a+b然后去和 c,d相乘,但是因为使用 了 define(它只是一个简单的替换),所以式子实际上变成了c*a+b*d另外举一个例子:#definepin(int*);pina,b;本意是 a 和 b都是 int 型指针,但是实际上变成 int*a,b;a 是 int 型指针,而 b是 int 型变量。这是应该使用 typedef来代替 define,这样a 和 b就都是 int 型指针了。所以我们在定 义 的时候,养成一个良好的习惯,建议所有的层次都要加括号。3 .3 .11 宏的单行定义(少见用法)#defin e A(x)T_##x#defin e B(x)#@x#defin e C(x)#x我们假设:x=1,则有:A(1)------〉T_1B(1)------〉'1'C(1)------〉"1"(这里参考了 hustli的文章)3 .3 .22 defin e 的多行定义defin e 可以替代多行的代码,例如 MFC中的宏定义(非常的经典,虽然让人看了恶心)#defin e MACRO(arg1,arg2 )do{\/*declaration s*/\stmt1;\stmt2 ;\/*... */\}while(0)/*(n otrailin g;)*/关键是要在每一个换行的时候加上一个"\"4 .条件编译在大规模...