Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

sizeof ('a') doesn't reliably tell you whether you're compiling C or C++. It yields the same result in an implementation where sizeof (int) == 1 (which requires CHAR_BIT >= 16). (The difference is that character constants are of type int in C, and of type char in C++.)

So if sizeof ('a') == 1, then either you're compiling as C++ or you're compiling as C under a rather odd implementation.

Both POSIX and Windows require CHAR_BIT==8. The only systems I know of with CHAR_BIT>8 are for digital signal processors (DSPs).

If you want to tell whether you're compiling C or C++:

    #ifdef __cplusplus
    ...
    #else
    ...
    #fi


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: