This might be something too obvious. However, I couldn’t find the specific answer though many stackoverflow threads talk about different aspects of this.
typedef struct _tmp {
unsigned int a;
unsigned int b;
} tmp;
int main()
{
int c=10;
if (c <= sizeof tmp) {
printf("less\n");
} else {
printf("more\n");
}
return 0;
}
I compile this prog as –
g++ -lstdc++ a.cpp
I get an error –
expected primary-expression before ‘)’ token
I think I am missing something very obvious and straightforward. But can’t seem to pinpoint it :-/
Thanks!
5.3.3 Sizeof [expr.sizeof]
In your case, it is a type-id so it must be parenthesized. What a type-id is is described in 8.1 Type names [dcl.name].
sizeof tmpshould besizeof (tmp).As in
if (c <= sizeof tmp)should beif (c <= sizeof (tmp)).Yup, pretty “obvious and straightforward”.