2011-11-19 27 views
0

我有一個神祕的問題! 在main.c中我有以下幾點:CC編譯器中未定義的函數(minix)

#include "jogo.h" 
int main(){ 
    int i; 
    sef_startup(); 
    vg_init(0x105); 
    batalha_naval(); 
    sleep(5); 
    vg_exit(); 
    return 0; 
} 

在jogo.h我:

#ifndef __JOGO_H 
#define __JOGO_H 
void batalha_naval(void); 
#endif 

而在main.c中我有:

#include "core.h" 
void batalha_naval(void) { 
    vg_draw_line(0, 0, 1023, 0, 12); 
} 

但當做一個make時,編譯器會在main.c中給出一個undefined _batalha_naval();。如果我在jogo.h中定義函數,則不會出現錯誤,但如果我這樣做,則會顯示錯誤。

我正在使用CC編譯器。

+0

向我們展示您正在使用的編譯命令。 – AusCBloke

+0

core.h中是什麼? – Hogan

回答

0
  1. 你jogo.h似乎是正確的。 如果您希望在多個編譯單元中使用函數「batalha_naval()」,則需要它。

  2. 你應該在main.c和jogo.c中包含「#include」jogo.h「'。

  3. 您的鏈接命令中必須包含main和jogo。

+0

嗨,最後的代碼是在main.c中,對不起 –

0

你如何鏈接?你需要做的要麼:

 
$ cc -c main.c 
$ cc -c jogo.c 
$ cc main.o jogo.o 

 
$ cc main.c jogo.c 
+0

啊,我明白了,這可能是問題! –