Xeo*_*Xeo 17 c++ visual-studio-2010 visual-c++ c-preprocessor
我得到了以下实现来获取可变参数宏中的参数数量(目前限制为16个参数).但是,对于VS2010 1,无论传递多少个参数,输出总是如此.使用GCC,输出是正确的,让我得出结论,我必须错过MSVC特有的东西(10).
#define PP_NARGS(...) \
_xPP_NARGS_IMPL(__VA_ARGS__,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0)
#define _xPP_NARGS_IMPL(x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15,N,...) N
int main(){
int i = PP_NARGS(A,V,C,X,Y,Z);
std::cout << i;
std::cin.get();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
因此,问题是标题所述,任何帮助将不胜感激.
Ise*_*ria 24
以下解决方案是否有帮助?
#define EXPAND(x) x
#define PP_NARGS(...) \
EXPAND(_xPP_NARGS_IMPL(__VA_ARGS__,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0))
Run Code Online (Sandbox Code Playgroud)
我认为你的宏没有特别错,但MSVC的__VA_ARGS__扩展似乎与C99不同.
| 归档时间: |
|
| 查看次数: |
4528 次 |
| 最近记录: |