假设以下头文件:
#ifndef TEST_HEADER
#define TEST_HEADER
class myFoo
{
public:
myFoo(unsigned long *ulbaz):
baz(ulbaz)
{
*baz++;
}
~myFoo()
{
*baz--;
}
private:
unsigned long *baz;
};
#define DEFINE_A( a ) myFoo bar( a);
#define DEFINE_B( b )
#endif // test_header
代码示例:
// code.cpp
#include "test.h"
unsigned long mylong = 0L;
int main()
{
DEFINE_A( &mylong);
DEFINE_B( &mylong);
}
如您所见,DEFINE_B
为空。我不明白的是:每次DEFINE_B
被调用时,我都会从 进入析构函数myFoo
,我可以在调用堆栈中看到 - 那怎么可能?据我所知,一个空的define
扩展为;
.
编辑:此代码现在有效。