> > > Christoph Scholtes writes: > > > > > Then we get to emacs.c: > > > emacs.c(537) : error C2059: syntax error : '<<' > > > emacs.c(537) : error C2059: syntax error : 'constant' > > > emacs.c(537) : error C2059: syntax error : ')' > > > > cl.exe does not like the shift operator in this statement: > > > > static int __declspec(align(1 << 3)) test = 1; > > That comes from Fabrice, assuming that removing `static' doesn't help. > > Does it fail even if you take (1 << 3) in one more level of > parentheses? > > What about an intermediate macro, as in > > #define FOO (1 << GCTYPEBITS) > static int __declspec(align(FOO)) test = 1; Ok. I have to admit that it does not work this way with msvc. Actually, I can't find a way to make cl.exe compute the (1<< GCTYPEBITS) before giving it to the align declaration. At least not with the current release of cl.exe (16.00.40219.01). I can't check about the previous ones I may have used. Our best bet is to use a construction like : #define GCTYPEBITS 4 #if (1<