gcc 4.4.4 c89
我有一个正在测试的程序。我创建了一个名为devname的struct对象,并分配内存以便填充元素。我显示它们,然后释放分配的内存。
但是,我得到了以下错误:
invalid operands to binary != (have ‘struct Devices_names’ and ‘void *’)这是在我的for循环中,用于显示结构元素。但是,我觉得我是在测试空指针。
再问一个问题,免费有问题吗?
非常感谢你的建议,
#include <stdio.h>
#include <stdlib.h>
static struct Devices_names {
#define MAX_NAME_LEN 80
int id;
char name[MAX_NAME_LEN];
} *devname;
static void g_create_device_names(size_t devices);
static void g_get_device_names();
static void destroy_devices();
int main(void)
{
#define DEVICES 5
g_create_device_names(DEVICES);
g_get_device_names();
destroy_devices();
return 0;
}
static void g_create_device_names(size_t devices)
{
size_t i = 0;
devname = calloc(devices, sizeof *devname);
if(devname == NULL) {
exit(0);
}
for(i = 0; i < devices; i++) {
devname[i].id = i;
sprintf(devname[i].name, "device: %d", i);
}
}
static void g_get_device_names()
{
size_t i = 0;
for(i = 0; devname[i] != NULL; i++) { <-- ERROR HERE
printf("Device id --- [ %d ]\n", devname[i].id);
printf("Device name - [ %s ]\n", devname[i].name);
}
}
static void destroy_devices()
{
while(devname != NULL) {
free(devname++);
}
}发布于 2010-11-30 16:44:42
devname[i]不是一个指针,它是一个struct Devices_names,因此比较没有意义。
https://stackoverflow.com/questions/4311868
复制相似问题