2012-01-30 1 views
1

У меня есть следующие в моем file.h:Неявное объявление функции, найденное в заголовке?

#define SetSP(sp) asm("movq %0,%%rsp":   : "r" (sp) ) 

Однако, в моем файле file.c, когда я пытаюсь использовать его, например:

SetSp(lwp_ptable[lwp_procs].sp); 

я получаю неявное объявление функции SetSp, когда я компилирую file.c. У меня есть #include "file.h" в file.c. Мысли?

+0

Вы включили файл заголовка? – swegi

+0

Да, я действительно включаю файл.h – Lucas

+1

Вы добавили дополнительное пространство сразу после '#define SetSP' и до' (sp) '? Включили ли вы файл 'file.h' в' file.c'? Используйте 'gcc -C -E file.c> file.i', затем загляните в' file.i', чтобы понять, что делает препроцессор ... –

ответ

4

Ваше определение SetSP, в то время как вы используете его как SetSp, обратите внимание на разницу в письме p. Добро пожаловать на язык, чувствительный к регистру ...

1

Если вы скопировали и вставили свой код, обратите внимание, что SetSP не совпадает с SetSp (вы использовали нижний регистр p при вызове макроса).