gpt4 book ai didi

c - 如何使用 const 指针值初始化 const 结构

转载 作者:行者123 更新时间:2023-11-30 17:22:46 25 4
gpt4 key购买 nike

下面的代码无法编译“初始化元素不是常量”,或者在 gcc 和 clang 上类似。

有什么办法可以让 z 更加恒定吗?它已经是一个指向常量字符的静态常量指针。

这可以工作(以符合标准的方式)还是违反标准?

static const char * const z = "1234";
const struct {
const char * a;
} b = {z};

我的具体用例更接近

const struct {
char x[5];
char y[5];
} n = {"12345","abcde"};
static const char * const z = n.x;
const struct {
const char * a;
} b = {z};

实际上,如果我可以定义一个别名,就像这样,我会更高兴

const char z[5] = n.x;

这是一个糟糕的语法,但是......

最佳答案

这是您可以获得的最接近特定用例的信息。

#include <stdio.h>

const struct
{
char x[6];
char y[6];
}
n = { "12345", "abcde" };

static const char * const z = n.x;
const struct
{
const char * const *a;
}
b = { &z };

int main( void )
{
printf( "%s\n", *b.a );
}

先前声明的静态或全局对象的地址始终是编译时常量。因此,只要 a 是指向指针的指针,您就可以将 &z 分配给 a

关于c - 如何使用 const 指针值初始化 const 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27885048/

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