我讨厌发布这个,因为其中有很多,但似乎没有一个能解决我所看到的问题。正常问题(未声明的函数、无意的强制转换、对基本指针的误解)似乎不适用于这里。这是我的代码的精简版:
#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
有什么帮助吗?