gpt4 book ai didi

c - 将指针分配给指针时,我收到警告 : assignment makes integer from pointer

转载 作者:太空狗 更新时间:2023-10-29 15:50:44 25 4
gpt4 key购买 nike

我讨厌发布这个,因为其中有很多,但似乎没有一个能解决我所看到的问题。正常问题(未声明的函数、无意的转换、对基本指针的误解)似乎不适用于此处。这是我的代码的精简版:

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

extern void* malloc ( size_t size );

typedef struct {
size_t size;
uint8_t* buffer, curr, next;
} buffer_t;

void init( buffer_t* b, int size ) {
b->size = (size_t) size;
b->buffer = (uint8_t*) malloc( sizeof(uint8_t) * b->size + 1 );
b->curr = (uint8_t*) b->buffer; // warning: assignment makes integer from pointer without a cast [enabled by default]
b->next = (uint8_t*) b->buffer; // warning: assignment makes integer from pointer without a cast [enabled by default]
}

int main ( int argc, char* argv[] ) {
buffer_t buf;

init( &buf, 16 );

return 0;
}

如果没有类型转换,这会失败,但加入类型转换会使它更加明显。

我正在使用 gcc 4.7.2 在 MinGW/MSYS 下的 WinXP(是的,是的,是的)上编译。使用以下命令:

gcc -std=c99 -Wall -o testing test.c

有什么帮助吗?

最佳答案

uint8_t*    buffer, curr, next;

按照你的写法,buffer 是一个指针,currnext 只是 uint8_t。你的意思可能是:

uint8_t    *buffer, *curr, *next;

更好的方法(不太容易出错)是让每个字段单独占一行。

关于c - 将指针分配给指针时,我收到警告 : assignment makes integer from pointer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18539799/

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