C thinks stuff inside a function is global?
Hi all, I'd be very grateful if you could help me with a very strange set of errors and warnings I get on some C code. I've been staring at it for a while and I'm really frustrated.
So, the code is like this:
Code:
#include <stdio.h>
#include <stdlib.h>
void main(){
int n,**mo,pn,m,p,n1=1,n2=1,test1[10][10]={{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0}};
p=phm(test1,&mo,n,n1,n2,&pn,&m);
}
int phm(int **h,int ***d_p,int n,int a1,int a2,int *k,int *pm){
int **e1,**e2,**ma,**d;
char pd,m;
if((d=malloc(sizeof(int *)))==NULL)return(1);
if((*d=malloc(sizeof(int)))==NULL)return(1);
if(a1==a2){
d={{a1}};
pd=1;
}
e1={{a1}};
e2={{a2}};
m=0;
while(!pd){
*pm=1;
d={{0}};
pd=0;
}
*d_p=d;
return(0);
}
Nevermind what it does or what it's supposed to do; this is sort of an abridged version of my program just to narrow down where the trouble arises. So I just want to get it to run, not give me any sensible results.
Now the errors and warnings I get all seem to indicate that everything going on inside phm is taken to be global for some reason. Specifically, I get the following:
Code:
--------------------Configuration: mingw5 - CUI Debug, Builder Type: MinGW--------------------
Checking file dependency...
Compiling C:\Users\Owner\AppData\Roaming\C-Free\5.0\samples\CHello.c...
[Warning] C:\Users\Owner\AppData\Roaming\C-Free\5.0\samples\CHello.c:3: warning: return type of 'main' is not `int'
[Error] C:\Users\Owner\AppData\Roaming\C-Free\5.0\samples\CHello.c:13: error: syntax error before '{' token
[Warning] C:\Users\Owner\AppData\Roaming\C-Free\5.0\samples\CHello.c:14: warning: data definition has no type or storage class
[Error] C:\Users\Owner\AppData\Roaming\C-Free\5.0\samples\CHello.c:15: error: syntax error before '}' token
[Warning] C:\Users\Owner\AppData\Roaming\C-Free\5.0\samples\CHello.c:16: warning: braces around scalar initializer
[Warning] C:\Users\Owner\AppData\Roaming\C-Free\5.0\samples\CHello.c:16: warning: (near initialization for `e1')
[Error] C:\Users\Owner\AppData\Roaming\C-Free\5.0\samples\CHello.c:16: error: `a1' undeclared here (not in a function)
[Error] C:\Users\Owner\AppData\Roaming\C-Free\5.0\samples\CHello.c:16: error: initializer element is not constant
[Error] C:\Users\Owner\AppData\Roaming\C-Free\5.0\samples\CHello.c:16: error: (near initialization for `e1')
[Error] C:\Users\Owner\AppData\Roaming\C-Free\5.0\samples\CHello.c:16: error: initializer element is not constant
[Error] C:\Users\Owner\AppData\Roaming\C-Free\5.0\samples\CHello.c:16: error: (near initialization for `e1')
[Warning] C:\Users\Owner\AppData\Roaming\C-Free\5.0\samples\CHello.c:16: warning: data definition has no type or storage class
[Warning] C:\Users\Owner\AppData\Roaming\C-Free\5.0\samples\CHello.c:17: warning: braces around scalar initializer
[Warning] C:\Users\Owner\AppData\Roaming\C-Free\5.0\samples\CHello.c:17: warning: (near initialization for `e2')
[Error] C:\Users\Owner\AppData\Roaming\C-Free\5.0\samples\CHello.c:17: error: `a2' undeclared here (not in a function)
[Error] C:\Users\Owner\AppData\Roaming\C-Free\5.0\samples\CHello.c:17: error: initializer element is not constant
[Error] C:\Users\Owner\AppData\Roaming\C-Free\5.0\samples\CHello.c:17: error: (near initialization for `e2')
[Error] C:\Users\Owner\AppData\Roaming\C-Free\5.0\samples\CHello.c:17: error: initializer element is not constant
[Error] C:\Users\Owner\AppData\Roaming\C-Free\5.0\samples\CHello.c:17: error: (near initialization for `e2')
[Warning] C:\Users\Owner\AppData\Roaming\C-Free\5.0\samples\CHello.c:17: warning: data definition has no type or storage class
[Warning] C:\Users\Owner\AppData\Roaming\C-Free\5.0\samples\CHello.c:18: warning: data definition has no type or storage class
[Error] C:\Users\Owner\AppData\Roaming\C-Free\5.0\samples\CHello.c:19: error: syntax error before "while"
[Warning] C:\Users\Owner\AppData\Roaming\C-Free\5.0\samples\CHello.c:21: warning: initialization makes pointer from integer without a cast
[Warning] C:\Users\Owner\AppData\Roaming\C-Free\5.0\samples\CHello.c:21: warning: data definition has no type or storage class
[Warning] C:\Users\Owner\AppData\Roaming\C-Free\5.0\samples\CHello.c:22: warning: braces around scalar initializer
[Warning] C:\Users\Owner\AppData\Roaming\C-Free\5.0\samples\CHello.c:22: warning: (near initialization for `d')
[Warning] C:\Users\Owner\AppData\Roaming\C-Free\5.0\samples\CHello.c:22: warning: data definition has no type or storage class
[Error] C:\Users\Owner\AppData\Roaming\C-Free\5.0\samples\CHello.c:23: error: redefinition of 'pd'
[Error] C:\Users\Owner\AppData\Roaming\C-Free\5.0\samples\CHello.c:14: error: previous definition of 'pd' was here
[Warning] C:\Users\Owner\AppData\Roaming\C-Free\5.0\samples\CHello.c:23: warning: data definition has no type or storage class
[Error] C:\Users\Owner\AppData\Roaming\C-Free\5.0\samples\CHello.c:24: error: syntax error before '}' token
[Warning] C:\Users\Owner\AppData\Roaming\C-Free\5.0\samples\CHello.c:25: warning: initialization makes pointer from integer without a cast
[Error] C:\Users\Owner\AppData\Roaming\C-Free\5.0\samples\CHello.c:25: error: initializer element is not constant
[Warning] C:\Users\Owner\AppData\Roaming\C-Free\5.0\samples\CHello.c:25: warning: data definition has no type or storage class
[Error] C:\Users\Owner\AppData\Roaming\C-Free\5.0\samples\CHello.c:26: error: syntax error before "return"
Complete Make CHello: 18 error(s), 17 warning(s)
These would all make total sense if all those commands were not inside any functions. But as it is, for the life of me I can't figure out what's happening. The brace pairs open and close as they should, so it's not a case of misplaced or missing braces. Same with parentheses. I'm going insane :frown: Please help? Thanks!