If /usr is a symlink to / and gcc uses /usr/include, it will work. If /usr is a real directory and gcc uses /usr/include, it will work as well. And if /usr doesn't exist, it will not work at all. Hard coding is just bad, period.