2012-01-30 48 views
1

我在file.h如下:,在頭文件中隱式聲明函數?

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

然而,在我file.c文件時,我嘗試使用它,例如:

SetSp(lwp_ptable[lwp_procs].sp); 

我得到的功能的隱式聲明SetSp,當我編譯file.c.時。我在file.c中有#include「file.h」。思考?

+0

您是否包含頭文件? – swegi 2012-01-30 06:16:59

+0

是的,我確實包含file.h – Lucas 2012-01-30 06:17:24

+1

你是否在'#define SetSP'之後和'(sp)'之前放置了一個額外的空間?你在'file.c'中包含了你的'file.h'嗎?使用'gcc -C -E file.c> file.i',然後在'file.i'裏面查看預處理器在做什麼... – 2012-01-30 06:17:43

回答

4

您的定義是SetSP,當您將其用作SetSp時,請注意字母p中的情況差異。歡迎使用區分大小寫的語言...

1

如果您已複製並粘貼您的代碼,請注意SetSPSetSp不一樣(您在調用宏時使用了小寫字母p)。