Błąd przy kompilacji programu z modułem

0

Witam mam taki problem. Chcę skompilować pilk negatyw.c za pomocą komendy "cc -c negatyw.c", aby otrzymać plik negatyw.o. Jednak podczas kompilacji wyskakuje mi taki oto błąd :

In file included from negatyw.c:5:0:
negatyw.h:1:17: error: array type has incomplete element type
int negatyw(int obrazek[][], int *wymx, int *wymy, int szarosci);
                ^

Z góry dzięki za pomoc :)

Kod negatyw.c

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include"negatyw.h"

#define MAX 512             /* Maksymalny rozmiar wczytywanego obrazu */
#define DL_LINII 1024       /* Dlugosc buforow pomocniczych */

/*funkcja negatyw - od wartosci max szarosci odejmuje sie wartosc komorki i uzyskuje sie obraz
 w negatywie*/
 
int negatyw(int obrazek[][MAX], int *wymx,int *wymy, int szarosci)
{
  int i,j;
  for (i=0; i<*wymy;++i)       
    {                  
      for (j=0; j<*wymx;++j) obrazek[i][j]=szarosci-obrazek[i][j];
    }                          
}

 

Kod negatyw.h

int negatyw(int obrazek[][], int *wymx, int *wymy, int szarosci);
 
1

Musisz podać rozmiar w drugim nawiasie

int negatyw(int obrazek[][MAX],
2

Tylko najbardziej zewnętrzna tablica może nie mieć podanej wielkości (bo de facto oznacza wskaźnik w parametrze funkcji).

int negatyw(int obrazek[][MAX], int *wymx, int *wymy, int szarosci);
0

Po dopisaniu MAX taki oto błąd:

In file included from negatyw.c:5:0:
negatyw.h:1:27: error: ‘MAX’ undeclared here (not in a function)
 int negatyw(int obrazek[][MAX], int *wymx, int *wymy, int szarosci);
                         ^

 
2

A gdzie masz zdefiniowane makro MAX?

3

Czy w zaincludowanym negatyw.h jest to widoczne? (podpowiedź: nie)

Możesz przenieść tę definicję do nagłówka (lepiej) lub przenieść definicję MAX nad #include "negatyw.h", ale wtedy narażasz się na łamanie ODR.

1 użytkowników online, w tym zalogowanych: 0, gości: 1