C++ 结构声明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::

我对C中的结构和if语句有疑问++

为了简单起见,我创建了一个示例代码来解释我的意图

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在这件事上真的有选择权;从这个描述来看,他们肯定会使用预处理器,并且理解它会工作,但是受到一些限制(例如:学术练习)。