In __GNUC__ it is implemented by a built-in, but in other standard c in a function, and i I don't succeed to find the source of the function in the tree....only the header. It is provided by GCC, hence the reason why it is surrounded by __GNUC__.