2015-02-19 4 views
-3

Я знаю, этот вопрос имеет много ответов, но я не буду всегда получаю сообщение об ошибке на GCC c1.cВызов функции C, определенные в другом файле

c1.c:(.text+0x5): undefined reference to `f' 
collect2: error: ld returned 1 exit status 

независимо от того, что я стараюсь.

Это c1.c

#include <stdio.h> 

#include "c.h" 

int main() 
{ 
    printf("F %d\n",f()); 
} 

это c2.c

#include <stdio.h> 

int f(void) {return 7;} 

int main() 
{ 
    printf("S %d\n",f()); 
} 

Это c.h

int f(void); 

Как я могу заставить его работать? На самом деле, я получал эту ошибку в большой программе, которая моделируется следующим образом. Я думаю, это способ сделать это. (И да, главное должно вернуть 0).

ответ

1

Вы будете иметь проблемы, так как у вас есть два различных main функции определены, но общий способ сделать это ссылка времени вопрос:

gcc -c c1.c 
gcc -c c2.c 
gcc c1.o c2.o 

Все, что вам нужно сделать, это выяснить, который вы хотите, и удалить ненужный.

Вы могли бы сделать что-то вроде:

gcc -Dmain=blah -c c1.c 
gcc -c c2.c 
gcc c1.o c2.o 
+0

И сообщение о компиляции не ошибка? – Novak007

+0

c2.o: В функции 'main ': c2.c :(. Text + 0xb): множественное определение' main' c1.o: c1.c :(. Text + 0x0): сначала определено здесь collect2 : ошибка: ld возвращен 1 статус выхода – Novak007

+0

Не работает ............................... – Novak007

Смежные вопросы