gpt4 book ai didi

c - 我的 dev c++ 返回非静态警告。代码有什么问题?

转载 作者:行者123 更新时间:2023-11-30 14:36:45 25 4
gpt4 key购买 nike

我正在编写这段代码,但找不到编译方法。尝试过在线编译器,每个编译器都给出了不同的错误原因,我的 Dev++ 说[警告] 非静态数据成员初始值设定项仅适用于 -std=c++11 或 -std=gnu++11

每个在线编译器都找不到代码错误

#include <stdio.h>
#include <stdlib.h>

struct uninter
{
char nome[5] = {'L','U','C','A','S'};
int RU = 2613496;
}; struct uninter aluno;

int main() {
int i;

printf("\n Nome do Aluno: ");
for (i = 0; i < 5; i++ ){

printf( "%c\n", aluno.nome[i]);
}
printf("\n RU do aluno: %d \n ", aluno.RU);


system("pause");
return 0;
}

[警告]非静态数据成员初始值设定项仅适用于 -std=c++11 或 -std=gnu++11

最佳答案

您收到的警告消息是因为您正在使用 C++ 编译器编译代码。可能与 -std=c++98-ansi 一起使用,或者以其他方式隐式使用 1998 年标准。

您正在尝试为结构体成员创建默认初始值设定项,该功能直到 2011 年标准才添加到 C++ 中。要编译具有此功能的 C++ 程序而不让编译器警告您,您需要传入 -std=c++11-std=gnu++11 将编译器命令标记为警告状态。

如果这是 C 代码而不是 C++ 代码,则结构的默认初始值设定项根本不是该语言的一部分。您可以在声明该结构类型的对象时初始化其成员变量。

如何使用 C 编译器执行此操作的示例:

// definition of the struct
struct uninter
{
char nome[5];
int RU;
};

// declaration of an instance of an object of type struct uninter
struct uninter x = {{'L','U','C','A','S'}, 2613496};

// alternative declaration if using C99 standard with designated initializers
struct uninter y = {
.nome={'L','U','C','A','S'},
.RU= 2613496
};

关于c - 我的 dev c++ 返回非静态警告。代码有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57861831/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com