如果查看DDK头文件,会发现有几个内核函数是以宏的方式实现的。这种宏中有几个宏的定义是相当糟糕的。例如,我们看到RemoveHeadList的定义如下:
#define RemoveHeadList(ListHead)
(ListHead)->Flink;
{RemoveEntryList((ListHead)->Flink)}
如果以以下方式调用RemoveHeadList,则将编译错误的代码:
if(SomethingInList)
Entry = RemoveHeadList(list);
使这个调用安全的唯一方法是使用花括号:
if(SomethingInList)
{
Entry = RemoveHeadList(list);
}
所以我们切勿为了贪图一时的方便,而使用不太规范的写法,最好是在所有的if、for和while等语句中使用花括号。
#define RemoveHeadList(ListHead)
(ListHead)->Flink;
{RemoveEntryList((ListHead)->Flink)}
如果以以下方式调用RemoveHeadList,则将编译错误的代码:
if(SomethingInList)
Entry = RemoveHeadList(list);
使这个调用安全的唯一方法是使用花括号:
if(SomethingInList)
{
Entry = RemoveHeadList(list);
}
所以我们切勿为了贪图一时的方便,而使用不太规范的写法,最好是在所有的if、for和while等语句中使用花括号。