替换宏的文字

Text replacing macros

本文关键字:文字 替换      更新时间:2023-10-16

给定这样的小应用程序

#include "stdafx.h"
class IGraph
{
};
#define NULLWrapper(n) class IG ##nWrapperNULL : public I##n 
class Test : public IGraph
{
};
NULLWrapper(Graph)
{
};
int main()
{
    IGnWrapperNULL gw;
    IGGraphWrapperNULL gw;
    return 0;
}

为什么Visual Studio 2015说IGGraphWrapperNULL不确定,而IGnWrapperNULL是正确的?不应该将##n替换为我在宏参数中发送的值吗?

##并不用于"串联"宏参数,它用于连接字符串。适当的定义是:

#define NULLWrapper(n) class IG##n##WrapperNULL : public I##n