ошибка: несовместимые типы в присваивании - PullRequest
0 голосов
/ 31 марта 2010

Мой код C

#include <stdio.h>
#include <stdlib.h>
#include "help.h"

int test(int x, P *ut) {
    int point = 10;

    ut->dt[10].max_x = NULL;
}

int main(int argc, char** argv) {

    return (EXIT_SUCCESS);
}

код моего файла help.h

typedef struct{
    double max_x;
    double max_y;
}X;

typedef struct{
    X dt[10];
}P;

Я получил ошибку, т. Е.

error: incompatible types in assignment

здесь появляется ошибка

ut->dt[10].max_x = NULL;

Кто-нибудь может мне помочь. заранее спасибо.

Ответы [ 3 ]

4 голосов
/ 31 марта 2010

Вы пытаетесь установить двойное значение на NULL, которое, даже если компилируется, смешивает два несовместимых термина. (В некоторых версиях библиотеки классов C NULL определяется просто как 0, в других - (void*)0 - в последнем случае вы получаете ошибку для такого кода.)

Более того, вы пытаетесь получить доступ к индексу 10 массива размера 10, который находится за пределами - элементы индексируются от 0 до 9. Поэтому попробуйте это:

ut->dt[9].max_x = 0.0;
0 голосов
/ 31 марта 2010
  1. max_x имеет тип double, NULL имеет тип (void *). Что заставляет вас думать, что они совместимы?

    Попробуйте ut->dt[10].max_x = 0.0;

  2. Доступ к dt [10] выходит за пределы, индексация массива начинается с 0!

0 голосов
/ 31 марта 2010

Я вижу две проблемы в

ut->dt[10].max_x = NULL;
  • Индекс 10 недействителен, он должен быть 0-9
  • Вы присваиваете значение NULLв два раза.Я думаю, вы имели в виду 0.0.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...