Why is the size of a function in C always 1 byte?

It’s a constraint violation, and your compiler should diagnose it. If it compiles it in spite of that, your program has undefined behaviour [thanks to @Steve Jessop for the clarification of the failure mode, and see @Michael Burr’s answer for why some compilers allow this]: From C11, 6.5.3.4./1:

The sizeof operator shall not be applied to an expression that has function type

Leave a Comment