onq*_*tam 0 c++ c-preprocessor variadic-macros c++11
我想要一个macro声明int一个给定名称和可选的初始化表达式.
我尝试在Stack Overflow上使用这个答案,但没有成功.
这是我试过的:
#define macro(...) int FIRST(__VA_ARGS__)(REST(__VA_ARGS__))
Run Code Online (Sandbox Code Playgroud)
这样使用时没有问题:
macro(foo);
Run Code Online (Sandbox Code Playgroud)
但是当给出初始化器时会出现错误:
macro(foo, 42);
Run Code Online (Sandbox Code Playgroud)
另一种 - 只是使用时会在没有参数的情况下__VA_ARGS__从-pedanticGCC 发出警告.
我怎样才能解决这个问题?
()当没有初始化表达式时,是否也可以避免括号 - 这意味着没有零初始化但是默认?
请注意,我的真实用例不仅适用int于任何类型,而且使用像boost这样的第三方也不是一种选择.
#define macro(...) int FIRST(__VA_ARGS__){REST(__VA_ARGS__)}
Run Code Online (Sandbox Code Playgroud)
你的主要问题是这int foo();是一个功能声明.int foo{};不是.
| 归档时间: |
|
| 查看次数: |
131 次 |
| 最近记录: |