2013-04-25 2 views
-2

при компиляции моего файла c я получаю эту ошибку Мне кажется, что мои типы не корректны для этой программы, как бы я решил исправить эту проблему? Я тоже установил свой .h-файл как мой .c файлимеют ошибку конфликтующих типов

ошибка

example4.c:35: error: conflicting types for ‘h’ 
example4.h:8: error: previous declaration of ‘h’ was here 

example4.h код

typedef struct{ 
     int x; 
     char s[10]; 
}Record; 

void f(Record *r); 
void g(Record r); 
void h(const Record r); 

example4.c код

#include <stdio.h> 
#include <string.h> 
#include "example4.h" 

int main() 
{ 
     Record value , *ptr; 

     ptr = &value; 

     value.x = 1; 
     strcpy(value.s, "XYZ"); 

     f(ptr); 
     printf("\nValue of x %d", ptr -> x); 
     printf("\nValue of s %s", ptr->s); 


     return 0; 
} 

void f(Record *r) 
{ 
     r->x *= 10; 
     (*r).s[0] = 'A'; 
} 

void g(Record r) 
{ 
     r.x *= 100; 
     r.s[0] = 'B'; 
} 

void h(Record *r) 
{ 
     r->x *= 1000; 
     r->s[0] = 'C'; 
} 
+0

См. [Ошибка: назначение местоположения только для чтения] (http://stackoverflow.com/questions/16226313/error-assignment-of-read-only-location) для приквела к этому вопросу. –

+0

«Как я могу исправить эту проблему» - делая типы одинаковыми, очевидно. Вы даже просмотрели свой код, прежде чем публиковать его? –

ответ

3

Ваш заголовочный файл объявляет void h(const Record r);

в то время как ваш исходный файл объявляет void h(Record *r)

Вы исправили исходный файл, но забыли исправить заголовок, когда вы пытаетесь применить answer I gave you к this question.

Смежные вопросы