Вообще-то никакие компиляторы давно не выдают предупреждений в подобных случаях.
К счастью, не все комппиляторописатели сдаются перед малограмотной толпой

Вот, например, IAR:
QUOTE
D:WORK_ARMXADDMAINmain.c(440) : Remark[Pe236]: controlling expression is constant
Отключаемо, как и любые warnings/remarks но таки есть.
while(1) - по крайней мере последний здравому смыслу не противоречит.
Совершенно дикий у Вас "здравый смысл" - написать зачем-то бессмысленное выражение "пока белый цвет белого цвета", после чего ожидать, что компилятором оно будет похерено и получится то, что естественно пишется как for( ; ; ) - выполнять нечто без контроля каких-либо условий.
в то же время в for второй операнд может быть пустым местом, причем, что самое странное, это пустое место воспринимается как истинное логическое выражение.
Воспринимается, как отсутствие каких либо условий для продолжения выполнения цикла. Отсутствие запретов и контроля трактуется, как разрешение. Отсутствие таблички на скамейке в парке об ограничении является естественным указанием на то, что сидеть можно. Табличка на зеленой скамейке - сидеть можно пока скамейка зеленая, просто идиотская.