You should declare this struct in the OpenCL C code as well. There are usually caveats related to struct alignment, but with your simple structure it should just work.
I read that there can be some problems with bits and bytes with custom data types. Is it better to use array of this custom struct Block or make 1D array of chars with length 16*number of blocks?
It won’t be a problem since you struct is 16-aligned. It could be if you used different data types like char3 and arrays of shorts, but in your case it is unlikely.