Start New Discussion within our Software Development Community

Question 1:

typedef struct
	{ int x, y, z ;
	  float *wave;
	  float *velocity;

	void a(Model *domain);
	void b(Model *domain, int t);

	int main()
	{int i;
	 int j=10;

	 Model Domain;
	 Domain=(Model *)malloc(sizeof(Model);  

	 for (i=0; i<10; i++)


if I block "Domain=(Model *)malloc(sizeof(Model)", the compiler doesnt show any error,
but if this line is visible or avaliable, the error will come out:

error: incompatible types in assignment;

If anyone can give me the direction of this problem, highly appreciate~

Question 2:

typedef struct
	{ int x, y, z ;
	  float *wave;
	  float *velocity;

I define a struct (Model) in struct.h file, which can be called by any other functions. Another header file is called "functions.h" which includes
all functions I have, such as a(Model *domain, int t), b(int d, int f, int g) .

When I compile my whole codes, the compile shows some errors:

error: syntax error before "*" token. This error points to a(Model *domain, int t). why does it show here? I declare struct in .h file and every subfunctions (a(), b()) also include it.
I am confused about this problem.

malloc allocates memory and returns a pointer to the beginning of that block of memory. You need to assign it to some pointer not an object as you are doing here. Change that to pointer and it should work.

i couldnt really understand your 2nd qs, would be helpful if you attached the files also.

And please check for succesful allocation and if yes then dont fgt to free this block of memory once you'r done


should be


And main should return 0 on successful return. Perhaps it internally does so. But its good practice to specify them explicitly.


This article has been dead for over six months. Start a new discussion instead.