Having simple c++ program like so:
#include <stdio.h>
#include <limits.h>
template <typename T>
char BinVal(T SrcVal) {
//short BitsCount = sizeof(T)*CHAR_BIT;
short BitsCount = sizeof(T)*CHAR_BIT;
short SeparatorCount = sizeof(T)*2-1;
short SeparatorSize = CHAR_BIT/2+1;
static char BinValStr[ BitsCount + SeparatorCount ] = {0};
printf("BitsCount: %d\n", BitsCount);
printf("SeparatorCount: %d\n", SeparatorCount);
printf("BinValStr size: %d\n", BitsCount + SeparatorCount);
int i = 0;
int j = 0;
for ( i=BitsCount+SeparatorCount-1; i>=0; i-- ) {
if( (j+1)%SeparatorSize == 0) {
BinValStr[i] = ' ';
}
else {
if( SrcVal&1 == 1 )
BinValStr[i] = '1';
else
BinValStr[i] = '0';
SrcVal >>=1;
}
j++;
}
char y='o';
return y;
//return BinValStr;
//printf("\nStr: %s", BinValStr);
}
int main(){
short val = 0b0000'0100'0001'0110; //18 dec
printf("\nStr: %c", BinVal(val) );
}
i get "storage size of ‘BinValStr’ isn’t constant" error.
When i make the BinValStr var "normal", local everything is OK. Why does making the variable static gives me the error?