C++ 结构声明C+中的If语句+;
我对C中的结构和if语句有疑问++ 为了简单起见,我创建了一个示例代码来解释我的意图C++ 结构声明C+中的If语句+;,c++,if-statement,struct,preprocessor-directive,C++,If Statement,Struct,Preprocessor Directive,我对C中的结构和if语句有疑问++ 为了简单起见,我创建了一个示例代码来解释我的意图 int var = 10 struct example{ int a; int b; if(var > 8){ int c; } }; 我有一个代码库,它使用与上面类似的代码。注释掉if部分不会给出任何错误。 我的问题是 if语句可以放在结构声明中吗 如果不是,可能的补救措施是什么,因为如果强制要求 注意:我不能使用#if、#else指令或std::
int var = 10
struct example{
int a;
int b;
if(var > 8){
int c;
}
};
我有一个代码库,它使用与上面类似的代码。注释掉if部分不会给出任何错误。
我的问题是
- if语句可以放在结构声明中吗
- 如果不是,可能的补救措施是什么,因为如果强制要求
注意:我不能使用#if、#else指令或std::optional或其他标准库来缓解此问题,因此请帮助我找到另一种解决方案。否您不能在结构或类定义中使用if语句。相反,对于条件声明,可以使用#if指令
#define var 10
struct example {
int a;
int b;
#if var > 8
int c;
#endif
}
这会奏效的
“#if”是编译器指令(预处理器指令)。另一方面,if语句是运行时语句
除此之外,别无选择 intmain()
int main()
{
int var = 10;
if(var>10){
struct example{
int a;
int b;
int c;
};
}else {
struct example{
int a;
int b;
};
}
cout<<"Hello World";
return 0;
}
{
int-var=10;
如果(var>10){
结构示例{
INTA;
int b;
INTC;
};
}否则{
结构示例{
INTA;
int b;
};
}
C和C++是不同的语言。只使用适合你使用的语言的标签。(我固定的是C++,因为标题中提到的C++,而不是C)。是吗,更重要的是它做了你想做的事吗?如果是的话,有什么理由不遵循这个模式吗?它应该做什么?它甚至不编译,所以是的,它会给出一个“错误”。即使这有任何意义,int c
显然在If
的范围内,然后消失。“我无法使用该语言提供的技术来实现这一点”…不确定您期望的答案是什么,除了整个“注意:我无法使用#if,#else指令来缓解这一问题"@无论谁能很好地使用它们,他只是出于不清楚的原因选择不使用。这是解决OP可能想要做的事情的唯一明智的解决方案。仍然不清楚它的意图是什么,因为在结构定义中使用像if
这样的控制流语句是没有意义的。不知何故,我不敢相信OP在这件事上真的有选择权;从这个描述来看,他们肯定会使用预处理器,并且理解它会工作,但是受到一些限制(例如:学术练习)。