Other Parts Discussed in Thread: SYSBIOS,
Tool/software: Code Composer Studio
hi,
with the following type of function declaration CCSv7 is not giving any build error, but CCSv6 gives up build error.
#include<stdio.h> void testFunc(int index1,int index2,float buff[index1][index2],float outBuff[index1][index2]); int main() { int index1 = 3, index2=3; float buff[index1][index2]; buff[0][0]= 6; //3; buff[0][1]= 6; //2; buff[0][2]= 9; //4 buff[1][0]= 2; buff[1][1]= 2; buff[1][2]= 4; buff[2][0]= 1; buff[2][1]= 1; buff[2][2]= 5; float outBuff[index1][index2]; testFunc(index1,index2,buff,outBuff); printf("Complete\n"); } void testFunc(int index1,int index2,float buff[index1][index2],float outBuff[index1][index2]) { int i,j,test,small; for(i =0;i<index1;i++) { test = buff[i][0]; for(j =0; j<index2;j++) { if(buff[i][j] < test) //error seen here { test = buff[i][j]; } } printf("Small in row %d is %d\n",i,test); } }
IN CCSv7: following is the behavior seen
/********************************************************************************************/
In the above code the expected result had to be
[C66xx_DSP1] Small in row 0 is 6
Small in row 1 is 2
Small in row 2 is 1
Complete
but the output seen is as follows.
[C66xx_DSP1] Small in row 0 is 6
Small in row 1 is 4
Small in row 2 is 5
Complete
/********************************************************************************************/
in the above code , inside testFunc the if condition is failing for the 2nd and 3rd row. Can this be explained?
but when ,
void testFunc(int index1,int index2,float buff[index1][index2],float outBuff[index1][index2])
is replaced with
void testFunc(int index1,int index2,float buff[INDEX_1][INDEX_2],float outBuff[INDEX_1][INDEX_2])
where INDEX_1,INDEX_2 are macros ( #define INDEX_1 3 , #define INDEX_2 3)
the code works fine and i get the expected output.
Regards
Asha
#include<stdio.h>
void testFunc(int index1,int index2,float buff[index1][index2],float outBuff[index1][index2]);int main(){ int index1 = 3, index2=3; float buff[index1][index2];
buff[0][0]= 6; //3; buff[0][1]= 6; //2; buff[0][2]= 9; //4
buff[1][0]= 2; buff[1][1]= 2; buff[1][2]= 4;
buff[2][0]= 1; buff[2][1]= 1; buff[2][2]= 5;
float outBuff[index1][index2]; testFunc(index1,index2,buff,outBuff); printf("Complete\n");
}
void testFunc(int index1,int index2,float buff[index1][index2],float outBuff[index1][index2]){ int i,j,test,small;
for(i =0;i<index1;i++) { test = buff[i][0]; for(j =0; j<index2;j++) { if(buff[i][j] < test) { test = buff[i][j]; }
} printf("Small in row %d is %d\n",i,test); }}