Я не думаю, что вы можете сделать это с препроцессором GNU, но, конечно, это невозможно сделать с простым стандартным препроцессором;вместо этого я думаю, что это задание для Makefile.
Пусть он запустит uname -a
и сохранит его в переменной Makefile, которая будет использоваться для создания правильной директивы -D
для компилятора.
Вы также можете заставить Makefile создать файл .h
, который будет содержать определение макроса, и этот файл будет #include
d для файлов, которые нуждаются в макросе COMPILED_ON
.Это дает дополнительный бонус, заключающийся в том, что он не зависит от специфичных для компилятора опций для определения макросов.
Обратите внимание, что эти предложения применимы также и для создания инструментов, отличных от хорошего старого.