gpt4 book ai didi

c - 简单的 C 结构无法编译

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

我正在尝试使用结构实现一个简单的环形缓冲区。我以前从未使用过结构,只是开始尝试理解它们。编译器退出并出现此错误:

expected '=', ',', ';', 'asm' or '__attribute__' before '.' token

错误指的是最后两行。

#define MAX_PROCESSES 16

struct ring_buffer{
uint8_t data[MAX_PROCESSES];
uint8_t size;
uint8_t count;
uint8_t write_pos;
uint8_t read_pos;
};

struct ring_buffer ring_buffer_processes;
ring_buffer_processes.size = MAX_PROCESSES;
ring_buffer_processes->size = MAX_PROCESSES;

我只是出于测试目的使用了 to 运算符,看看它是否有效。这当然应该只有一行。

我也尝试过使用“typedef”,但这也无济于事。这里有什么问题?

谢谢

最佳答案

你的代码有两个错误:

  1. 它缺少执行的入口点,即 main()
  2. 它正在尝试使用“->”访问成员,这是在通过指针访问成员时使用的。

所以纠正这些点给我们:

#include <stdint.h>

#define MAX_PROCESSES 16

struct ring_buffer{
uint8_t data[MAX_PROCESSES];
uint8_t size;
uint8_t count;
uint8_t write_pos;
uint8_t read_pos;
};

int main(void)
{
struct ring_buffer ring_buffer_processes;
struct ring_buffer * p_ring_buffer_processes;

p_ring_buffer_processes = &ring_buffer_processes;
ring_buffer_processes.size = MAX_PROCESSES;
p_ring_buffer_processes->size = MAX_PROCESSES;

return 0;
}

关于c - 简单的 C 结构无法编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37746312/

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