proper use of ifdef