Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C] error: unknown type name ‘obraz’

Ostatnio zmodyfikowano 2013-12-28 18:21
Autor Wiadomość
quatromen
Temat założony przez niniejszego użytkownika
[C] error: unknown type name ‘obraz’
» 2013-12-27 16:52:58
Witam mam problem z dzieleniem na moduły.
podzielilem program na 2 moduły :

main.c :
C/C++
#include<stdio.h>
#include<string.h>
#include<stdlib.h>

#define MAX 300
#define DL_LINII 200

void negacja( int );

/* Deklaracja struktury ZROBIONE*/
typedef struct {
    int wymx;
    int wymy;
    int szarosci;
    void * obraz_p;
} obraz;

typedef struct {
    void * obraz_pdwa;
} obrazdwa;

/* Druga tablica */
int tablicadwa( obraz * wobr, obrazdwa * wobrdwa )
{
    int i, j;
   
    int( * obraz_pgm )[ wobr->wymx ];
    obraz_pgm =( int( * )[ wobr->wymx ] ) wobr->obraz_p;
   
    /* Tworzymy druga dynamiczna tablice dwuwymiarowa */
    wobrdwa->obraz_pdwa = malloc( wobr->wymx * wobr->wymy * sizeof( int ) );
    int( * obraz_pgmdwa )[ wobr->wymx ];
    obraz_pgmdwa =( int( * )[ wobr->wymx ] ) wobrdwa->obraz_pdwa;
   
    for( j = 0; j < wobr->wymy; j++ )
    {
        for( i = 0; i < wobr->wymx; i++ )
        {
            obraz_pgmdwa[ i ][ j ] = obraz_pgm[ i ][ j ];
        }
    }
    return( 0 );
}

/* Zapisanie obrazu */
void zapisz( FILE * zapis, obraz * wobr )
{
    int i, j;
   
    int( * obraz_pgm )[ wobr->wymx ];
    obraz_pgm =( int( * )[ wobr->wymx ] ) wobr->obraz_p;
   
    fprintf( zapis, "P2 \n %d %d \n %d", wobr->wymx, wobr->wymy, wobr->szarosci );
    for( i = 0; i < wobr->wymy; i++ )
    {
        fprintf( zapis, "\n" );
        for( j = 0; j < wobr->wymx; j++ )
        {
            fprintf( zapis, "%d  ", obraz_pgm[ i ][ j ] );
        }
    }
}
i tak dalej inne funkcje..........do int main()........

negacja.c :

C/C++
#include<stdio.h>
#include<string.h>
#include<stdlib.h>


/* Negacja (zamiana czarnego na biale) ZROBIONE */
void negacja( obraz * wobr )
{
    int i, j;
   
    int( * obraz_pgm )[ wobr->wymx ];
    obraz_pgm =( int( * )[ wobr->wymx ] ) wobr->obraz_p;
   
    for( j = 0; j < wobr->wymx; j++ )
    {
        for( i = 0; i < wobr->wymy; i++ )
        {
            obraz_pgm[ i ][ j ] = wobr->szarosci - obraz_pgm[ i ][ j ];
        }
    }
}

I wyskakuje mi błąd

error: unknown type name ‘obraz’
[log]

To jest pewnie błąd w funkcji negacja
pewnie tutaj ale za bardzo nie wiem czy dodac strukture

Lub coś  dopisać w pliku main.c tutaj :
[cpp]
void negacja(int);
[cpp]

CO jest przyczyną tego błędu ?? ?? ??
Z góry dzięki za pomoc :)
P-100327
pekfos
» 2013-12-27 16:56:06
Definicje/deklaracje typów muszą być w każdej jednostce, która ich używa.
P-100329
quatromen
Temat założony przez niniejszego użytkownika
» 2013-12-27 17:05:32
Jak zadeklarowałem w funkcji negacja.c :

C/C++
/* Deklaracja struktury ZROBIONE*/
typedef struct {
    int wymx;
    int wymy;
    int szarosci;
    void * obraz_p;
} obraz;

Wszystko sie kompiluje ale  jak tworze plik odtworzenia to wyskakuje mi błąd :

Naruszenie ochrony pamięci (core dumped)

Co robic ?? ?? ??
P-100332
DejaVu
» 2013-12-28 01:07:56
Poprawnie politycznie powinieneś mieć jeszcze plik negacja.h, w którym zdeklarowane byłyby struktury (oraz plik *.h powinien zawierać deklaracje funkcji - bez ich implementacji), a pliki *.c robiłyby #include"negacja.h".
P-100386
quatromen
Temat założony przez niniejszego użytkownika
» 2013-12-28 18:21:58
dzięki :) , czyli tą deklaracje struktury mam mieć w pliku negacja.h i negacja.c czy wystarczy tylko w negacja.h ??
P-100419
« 1 »
  Strona 1 z 1