On Tuesday 12 June 2007 19:28, Brian Dessent wrote: > Mihai Don?u wrote: > > > Not that is of great importance, but does anyone know why > > > > int main( void ) > > { > > return printf( "%d\n", ( int )sizeof( main ) ); > > } > > > > prints 1 ? :) > > > > (sizeof( &main ) prints 4/8 as it should) > > In this context 'main' is a function type, i.e. a type that describes a > function of a given return type and a given number and type of arguments > (C99 §6.2.5 para. 20). It is invalid to use sizeof() with a function > type expression (C99 §6.5.3.4 para. 1) and hence this code invokes > undefined behavior. gcc gives a warning if you compile with -pedantic, > but otherwise it apparently just returns 1; it would be equally within > its rights to return 42 or to generate code to format the users hard > drive -- that is the nature of undefined behavior. Unlike me, you really do know your C99 book :) Thanks a lot! -- Mihai Donțu