2015-02-25 4 views
-2

Я написал этот код:Компилятор ошибок в коде C, что я не могу понять,

short foo(short a) 
{ 
short b,c; 
b=10; 

c = a + b; 

return c; 
} 

я получаю ошибку компиляции, как:

usr/lib/gcc/x86_64-redhat-linux/4.9.2/../../../../lib64/crt1.o: In function `_start':                               
(.text+0x20): undefined reference to `main'                                         
collect2: error: ld returned 1 exit status 

Может где я неправильно?

Остается ли здесь неопределенным? Я немного новичок в программировании на С, поэтому, пожалуйста, извините мое незнание нескольких очевидных вещей.

+1

Я предполагаю, что вы хотели скомпилировать с опцией '-c' и что' main' находится в другом файле. – user3386109

+0

У вас есть несколько учетных записей, чтобы задать тот же вопрос http://stackoverflow.com/questions/28729505 –

+0

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

ответ

3

Это не ошибка компилятора, а ошибка компоновщика. Код, который вы показали, не сломан, он неполный. Сообщение

undefined reference to `main' 

говорит вам, что вы не определили main функцию, которая необходима в качестве отправной точки программы. Add

int main(void) { 
    // code here that is supposed to run when the program is executed 
} 

к коду.

+0

Не могли бы вы дать мне tje разницу, когда я определяю «a» как переменную стека и меняю ее на короткий foo (короткий a) на короткий foo()? В чем разница между двумя инициализациями? – VarunR

+0

'a' в' short foo (short a) '- это параметр функции, так что вызов' foo (10) 'будет вводить' foo' с 'a', установленным в' 10'. Если вы объявляете 'foo' как' short foo() ', он будет вызываться как' foo() 'вместо (без параметра), и если вы объявите' a' локально в 'foo', он будет иметь любое значение, которое вы дайте его там (или неопределенный, если вы его не дадите). Но что это касается вашего вопроса о ошибке компоновщика? – Wintermute

+0

Я пытался сравнить эти два кода, запустив оба отдельно, чтобы понять, как они компилируются. – VarunR

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