gpt4 book ai didi

c - 使用指向外部结构元素的指针进行静态数组初始化?

转载 作者:太空宇宙 更新时间:2023-11-04 08:29:53 24 4
gpt4 key购买 nike

我想静态初始化一个数组,但它的一些元素是指向外部结构的指针。

我不能将结构声明为常量,因为它们的元素在别处被修改,既不是静态的,因为它与外部声明冲突。

有没有办法在静态数组初始化中解决这个问题,或者我必须在函数中初始化它?

编辑:在一次出色的发布后查看您的示例,我发现错误是我使用的是 PWMD2 而不是 &PWMD2 (其中 PWMD2 是外部结构)。

显然错误是

error: initializer element is not constant

为了指出我在做什么,部分代码(使用 ChibiOS)如下:

esc.h

extern struct Engine{
GPIO_TypeDef *gpio;
uint8_t pin;

PWMDriver *driver;
pwmchannel_t channel;
pwmcnt_t width;
}engines[];

esc.c

struct Engine engines[] = {
{GPIOD, 3, &PWMD2, 0, 0},
{GPIOD, 4, &PWMD2, 1, 0},
{GPIOD, 6, &PWMD2, 2, 0},
{GPIOD, 7, &PWMD2, 3, 0},
};

最佳答案

详细说明您的问题,因为以下内容对我来说没问题,据我所知,这是您要求做的:

主.c

#include <stdio.h>

#include "externs.h"

static struct_int_t* initextint[1] = { &extint };

int main( int argc, char* argv[] )
{
printf( "extint: %d\n", initextint[0]->value );
return 0;
}

外部.h

#ifndef EXTERNS_H
#define EXTERNS_H

typedef struct {
int value;
} struct_int_t;

extern struct_int_t extint;

#endif

外部.c

#include "externs.h"

struct_int_t extint = { 10 };

编译:

C:\>gcc main.c externs.c

运行:

C:\>a
extint: 10

关于c - 使用指向外部结构元素的指针进行静态数组初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28898016/

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