Вам нужно определить HELLO
во время компиляции (либо с -DHELLO
как флаг компилятора или #define HELLO
где-то), в противном случае компилятор никогда даже и не видит printk
вызов и никакого кода для нее не получает сигнал.
Вы не можете заставить C-компилятор повторно запускаться на начальной стадии загрузки на основе параметров загрузки, что вам нужно будет сделать, чтобы изменить HELLO
.
Ядро ничем не отличается от любой другой программы C в этом отношении - директивы препроцессора обрабатываются очень рано в процессе компиляции.
Вы можете установить параметры с помощью this helper macro, которые являются регулярной переменной, которая может быть установлена на загрузку и протестирована во время выполнения (не время компиляции) с простым старым оператором if
.
Мой вопрос в том, есть ли способ определить HELLO после того, как код скомпилирован с использованием параметра загрузки – nist
@nist - Ядро не является особенным, препроцессор все еще происходит очень рано в компиляции, как и любой другой C программа. Вы можете писать нормальные операторы 'if' в ядре так же, как вы можете, в любой другой программе на C, но если вы хотите вместо' # ifdef' – Flexo
Спасибо за информацию. Если я использую инструкции if, как я могу заставить свое ядро вести себя с разными параметрами загрузки и как добавить свой собственный параметр загрузки? – nist