Боюсь я с вами не соглашусь по этому поводу, т.к. он использует "стражы включения" (include guards):
#ifndef DBWICON_H
#define DBWICON_H
...
#endif
"стражы включения" исключают повторное включение кода в единице компиляции.
Если бинарник собирается из 10 файлов-исходников, и каждый их них включает в себя icon.h (хранящий, скажем одну static иконку), то в бинарнике получится 10 иконок.
Кстати, gcc выбрасывает неиспользуемые static данные, и варнингов не выдаёт (у меня 4.1.3). Если наши 10 tu не используют подключаемую иконку, то в бинарнике не будет ни одной иконки.