Я не знаю, как активировать printk()
- что вы искали в Google? Среди прочего, я обнаружил этот , что, по-видимому, означает, что printk()
почти всегда доступен (но вы должны пометить сообщения соответствующим уровнем, и, вероятно, есть контроль над тем, какие уровни отображаются на консоль).
Квадратные скобки в имени макроса неортодоксальны - и, следовательно, возможно, являются расширениями, специфичными для вашей системы.
Читая между строк, вполне вероятно, что вы говорите о ядре Linux и, следовательно, о GNU Make, но вы бы помогли всем, если бы вы сказали такие вещи.
Обозначение :=
является непосредственным присвоением переменной. RHS оценивается, когда строка читается и обрабатывается, а не когда используется макрос, как обычно. Это означает, что если на RHS имеются макросы, последующие изменения этих макросов не повлияют на значение этого макроса. Рассмотрим:
CFLAGS = ${OFLAGS} ${IFLAGS} ${DFLAGS} ${WFLAGS}
CFLAGS := ${OFLAGS} ${IFLAGS} ${DFLAGS} ${WFLAGS}
Первый вариант отмечает, что CFLAGS будет сформирован из 4 названных макросов (ну, на самом деле, он просто копирует строку, готовую для последующего расширения), но не расширяет значения, пока не будет использован (предположительно) в компиляции C команда.
Второй вариант сразу ищет значения 4 макросов в момент чтения строки и расширяет их. Последующие изменения в 4 ссылочных макросах не отражены в CFLAGS.
Запись +=
добавляет RHS к макросу, а не просто заменяет его.