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.

yes Agni is right. U should define Domain as pointer and not Object:

Model *Domain;

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.


Thank you very much. I got it

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.