gpt4 book ai didi

c - 这个结构体语法背后的原理是什么?我怎样才能让 Visual Studio 接受它是正确的?

转载 作者:行者123 更新时间:2023-11-30 18:50:50 24 4
gpt4 key购买 nike

下面的代码是开源 C 程序的片段。 Visual Studio 将下部结构成员中的点指出为错误。奇怪的语法背后的原理是什么以及如何让 Visual Studio 接受它是正确的。我知道这是正确的。我在开源代码中一次又一次地看到它,但每次 VS 拒绝它时,我都会转储代码。我觉得这一次我应该勇敢面对。

static struct scrypt_test{
const char *passwd;
cosnt char *salt;
uint64_t N;
unint32_t r;
unint32_t p;
uint8_t result[TESTLEN];
} testcase = {
.passwd = "pleaseletmein",
.salt = "sodiumChloride",
.N = 16,
.r = 8,
.p = 1,
.result = { /*some entries*/}
}

最佳答案

What is the principle behind the wied syntax

testcase = 之后的大括号内的代码是变量 testcase 的初始值设定项。它使用 C99 风格的指定初始值设定项来阐明内部每个成员初始值设定项初始化哪个结构元素。格式为.<member_name> = <member_value> 。除了清晰之外,此表单还允许您以任意顺序提供成员,以及跳过成员,尽管所提供的代码不会执行这些选项。

how can I make visual studio accept it as being correct.

您无法让旧版本的 VS 接受此代码。不接受它是 VS 的这些版本不符合 C99 的几种方式之一,更不用说不符合 C2011 了。如果您一直使用旧的 VS 来构建 C 项目,那么您需要准备将代码更改为它可以接受的内容。在这种情况下,这意味着删除成员指示符:

// ...
} testcase = {
"pleaseletmein",
"sodiumChloride",
16,
8,
1,
{ /*some entries*/}
};

如果没有指示符,成员初始值设定项的出现顺序必须与结构声明中成员本身的顺序相同。

但是,如果您可以升级到最新的 VS,或者可以转储 VS 以获取更好的东西,那么这些可能是您的最佳选择。

关于c - 这个结构体语法背后的原理是什么?我怎样才能让 Visual Studio 接受它是正确的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38905807/

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