我正在使用一些API,它几乎每年都会更改,我需要重新编译我的一些项目。为了能够处理一个文件,我想重新定义一些函数。这是的问题
#if API_VERSION < 12
#define somenamespace::someNEWfunction() someOLDfuncion()
#define somenamespace::someNEWnamespace //replace with nothing
#endif
所以我有两种情况。第一个是当我有一个功能完全相同,但被重命名并移动到它自己的新名称空间时,所以我只需要去掉名称空间部分,用旧名称替换它。第二个是当函数刚刚移动到它自己的新名称空间,但具有相同的名称时。
由于::
符号,编译器不允许我编译它。
宏替换标记,而不是名称。
您正试图同时替换三个令牌(somenamespace
、::
和someNEWfunction
(。
你不能那样做。
相反,考虑一个命名空间别名。