C++ #定义包含名称空间的函数
我正在使用一些API,它几乎每年都在变化,我需要重新编译我的一些项目。为了能够处理单个文件,我想重新定义一些函数。 问题就在这里C++ #定义包含名称空间的函数,c++,visual-studio,c++17,C++,Visual Studio,C++17,我正在使用一些API,它几乎每年都在变化,我需要重新编译我的一些项目。为了能够处理单个文件,我想重新定义一些函数。 问题就在这里 #if API_VERSION < 12 #define somenamespace::someNEWfunction() someOLDfuncion() #define somenamespace::someNEWnamespace //replace with nothing #endif #如果
#if API_VERSION < 12
#define somenamespace::someNEWfunction() someOLDfuncion()
#define somenamespace::someNEWnamespace //replace with nothing
#endif
#如果API_版本<12
#定义somenamespace::someNEWfunction()SomeOldFunction()
#定义somenamespace::someNEWnamespace//替换为nothing
#恩迪夫
所以我有两种情况。第一个是当我有一个工作完全相同的函数,但被重命名并移动到它自己的新名称空间时,所以我需要去掉名称空间部分并用旧名称替换它。
第二个是当函数刚移动到它自己的新名称空间,但名称相同时
编译器不允许我编译它,因为:
符号。宏替换标记,而不是名称
您试图同时替换三个令牌(somenamespace
、:
和someNEWfunction
)
你不能那样做
取而代之的是,考虑一个.< /p>你可能正在寻找一个。宏是解决这个问题的错误方法。@IgorTandetnik我有很多函数调用这个新名称空间,我只需要在不更改实际代码的情况下去掉它。不幸的是,名称空间别名对我没有帮助,我也看不到任何其他解决方案,只能使用宏:(@Danchyg1337,我们这里说的是多少?100s?1000s?正如你所发现的,宏也不起作用。你可以提供一个。展示你当前代码的示例,解释为什么它不能按原样编译,以及你想做什么来编译它。你可以提供你自己的
someNEWfunction
的实现,它将调用someOLDfuncion
。您可以将其放入somenamespace
命名空间中。