Skip to content
Sign upLog in
← Back to Community

How do I go about to fix "undefined reference to 'main'"?

Profile icon

This is my first time using C and replit and I don't know how to fix this. Thank you in advance!

Profile icon
Profile icon
Profile icon

C only runs the main function. Other functions must be called.

Here ya go:

#include <stdio.h> int hello(); int main() { hello(); return 0; } int hello() { printf("Hello World! My name is Diego."); }

don't forget to write safe C!

Profile icon

In low level languages like C, the compiler needs what is called an "entry point".

In C, C++, Go, Rust etc, this entry point is called the "main function". In C/C++, you declare the main function as either an Integer, or a Void. In other languages like Rust, Go, Java, you declare with either declaring it as a static void(Java), or by putting func(Golang) in front of it, or whatever syntax the language supports for a function declaration.

Low-level languages, or should I say, compiled programming languages require a entry-point function(the main function) to compile. The main function is ALL the compiler looks it, and is ALL the compiler needs to successfully run the program.

If the main function is not found, compilation will fail, and the compiler will throw an error. If you know assembly, or have some basic common knowledge over the assembly language(whichever version you write), you'd know why a compiled programming language needs to have an entry-point function(called main).

If you don't know, here is a simple assembly program:

section .text global _start %define sys_call int 0x80 _start: mov eax, 1 mov ebx, 0 sys_call

_start indicates the "main" function in a compiled programming language. Whatever that language compiles to(some version of assembly), you can expect to see _start, main or some indication that this is the entry point of the program.

Nothing else runs but what is within the "main" function.

Profile icon

I believe it needs to be int main() so that you have a "main" object

Profile icon

Thanks. When I switched it to main, it doesn't seem to find main.c

Is there a way for me to keep the file as hello.c and run it?