use*_*029 3 c pointers gcc-warning
我讨厌发布这个,因为有这么多,但它们似乎都没有解决我所看到的.正常问题(未声明的函数,无意的强制转换,对基本指针的误解)似乎不适用于此处.这是我的代码的精简版:
#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;
}
Run Code Online (Sandbox Code Playgroud)
没有演员阵容就会失败,但是把它们放进去会更加明显.
我正在使用gcc 4.7.2在MinGW/MSYS下编译WinXP(是的,是的,是的).使用以下命令:
gcc -std=c99 -Wall -o testing test.c
Run Code Online (Sandbox Code Playgroud)
有帮助吗?
cni*_*tar 10
Run Code Online (Sandbox Code Playgroud)uint8_t* buffer, curr, next;
你写它的方式,buffer是一个指针,curr而next仅仅是uint8_t秒.你可能意味着:
uint8_t *buffer, *curr, *next;
Run Code Online (Sandbox Code Playgroud)
更好的(不太容易出错)就是让每个字段都在自己的行上.