Printf не заменяет строковые параметры формата - PullRequest
1 голос
/ 04 апреля 2011

Я пытаюсь выполнить домашнее задание, включающее изменение кода ядра в minix, и у меня самая странная проблема, которую я когда-либо видел.

Я модифицирую alloc.c на сервере pm (для тех из вас, кто знаком с minix) и добавил глобальную переменную в начало файла:

PUBLIC int logging = 0;

Затем я пытаюсь прочитать переменную в одной из своих функций, которые я добавил в ядро:

PUBLIC int do_setalloc(void)
{
  printf("logging = %i\n", logging");
  return (OK);
}

У меня есть тестовая программа, которая запускает этот код вне пространства ядра:

int main(void)
{
  message m;
  m.m1_i1 = 1;
  m.m1_i2 = 1;
  _syscall(MM,69,&m);
  return 0;
}

Это вывод при запуске этого кода:

logging = %i

Printf на самом деле не заменяет форматирование% i действительным значением целого числа, я тут рву свои волосы, и это назначение скоро! Помогите!

Ответы [ 2 ]

3 голосов
/ 04 апреля 2011

Я не думаю, что "% i" является допустимым преобразованием формата; наиболее часто используемый тег для печати int - это «% d». Но на странице руководства printf, которую я только что посмотрел на заявленный% я был синонимом% d Возможно, minix printf не определяет его.

2 голосов
/ 04 апреля 2011

Разве это не %d для целого числа в printf?

...