"неосторожно сказанные слова". Макрос не проверяет типы данных. И для него например базовым может быть двухбайтовое слово. И Ваш 1000000 без суффиксо UL может дать подлянку, так же, как и часто встречающиеся например (1<<20) вместо (1UL<<20). Шаблоны, inline и const, в С++ предпочтительнее. Но неубиваемые #ifdef #if 0 пока никто не собирается ругать.