error: expected expression before ‘if’ <p>Here is my code, I don't know where I'm wrong and what is "expression"?</p> <pre><code>#define m(smth) (if(sizeof(smth) == sizeof(int)) {printf("%d", (int) smth);} else{puts((char*)smth);}) int main(void) { m("smth"); } </code></pre> <p>here is output:</p> <pre><code>/home/roroco/Dropbox/rbs/ro_sites/c/ex/ex2.c: In function ‘main’: /home/roroco/Dropbox/rbs/ro_sites/c/ex/ex2.c:18:18: error: expected expression before ‘if’ #define m(smth) (if(sizeof(smth) == sizeof(int)) {printf("%d", (int) smth);} else{puts((char*)smth);}) ^ /home/roroco/Dropbox/rbs/ro_sites/c/ex/ex2.c:21:5: note: in expansion of macro ‘m’ m("smth"); ^ make[3]: *** [ex/CMakeFiles/ex2.dir/ex2.c.o] Error 1 make[2]: *** [ex/CMakeFiles/ex2.dir/all] Error 2 make[1]: *** [ex/CMakeFiles/ex2.dir/rule] Error 2 make: *** [ex2] Error 2 </code></pre>