If it's not in the header, compilation fails for some files because both NULL and assert (used in nlr_raise) are undefined. The ifdef is there exactly because of the codestyle: other platforms are fine without the header so there's no need to include it.