C - can't use my sizeof implementation as an array size -
i implemented sizeof as recommended. work ok when want print size of variable ,but can't use array size.
this code:
#include <stdio.h> #include <stdlib.h>  #define my_sizeof(var) (size_t)((char *)(&var+1)-(char*)(&var))  int s = 7;  void main() {     int arr[sizeof(s)]; //works ok     int arr2[my_sizeof(s)];//error     printf("%d\n", my_sizeof(s));//works ok     int temp = 0; }     error   1   error c2057: expected constant expression error   2   error c2466: cannot allocate array of constant size 0 error   3   error c2133: 'arr2' : unknown size        
your implementation my_sizeof not equivalent to sizeof operator in c, compile time operator whereas yours can calculate size @ run time. 
so,
int arr[sizeof(s)];    declares array size sizeof(s) whereas 
int arr2[my_sizeof(s)];   does the same the array size not calculated @ compile time runtime. work, you'll need support of c99's vlas, compiler doesn't support , errors out.
Comments
Post a Comment