Why the main thing is necessary in the program

I created a program that is still under development. I did not intentionally declare the main one in my program. Since I am developing a library for creating a graph and another algorithm that I will use in my programs. The purpose of developing such a library in C is to work on the problems outlined in the book Introduction to Algorithms Thomas H Coreman Here is the code if someone wants to see.

#include<stdio.h>
#include<stdlib.h>
#define GREY 1
#define BLACK 0
#define WHITE 2
typedef struct node *graph;

graph cnode(int data);      //cnode is to create a node for graph
void cgraph(void);
struct node {
    int data, color;
    struct node *LEFT, *RIGHT, *TOP, *DOWN;
};

graph root = NULL;

void cgraph(void)
{
    int n, choice, dir, count;

    choice = 1;
    count = 1;
    graph priv, temp;

    printf("Printf we are making a graph the first is root node\n");
    while (choice == 1) {
        count++;
        if (count == 1) {
            printf("This is going to be root node \n");
            scanf("%d", &n);
            root = cnode(n);
            count--;
            priv = root;
        }       //ending if
        else {
            printf
                ("Enter direction you want to go LEFT 1 RIGHT 2 TOP 3 DOWN 4\n");
            scanf("%d", &dir);
            printf("Enter the data  for graph node\n");
            scanf("%d", &n);
            temp = cnode(n);
            if (dir == 1) {
                priv->LEFT = temp;
            }
            if (dir == 2) {
                priv->RIGHT = temp;
            }
            if (dir == 3) {
                priv->TOP = temp;
            }
            if (dir == 4) {
                priv->DOWN = temp;
            }
            priv = temp;
        }       //ending else
        printf
            ("Enter 1 to continue adding nodes to graph any thing else would take you out\n");
        scanf("%d", &choice);
    }           //ending while
}               //ending main

graph cnode(int data)
{
    graph temp = (graph) malloc(sizeof(graph));

    temp->data = data;
    temp->LEFT = NULL;
    temp->RIGHT = NULL;
    temp->TOP = NULL;
    temp->DOWN = NULL;
    temp->color = -1;
    return temp;
}

When I compiled the above program, I got the following error.

cc graph.c
/usr/lib/gcc/x86_64-linux-gnu/4.4.3/../../../../lib/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
collect2: ld returned 1 exit status

What does this error mean and why should I declare the main one in my program?

+3
source share
7 answers

Why? Because the standard says so (mostly).

main C ( , ).

, main , ( ). , , .

, , main ( , ), , .

+4

gcc ( C) . main() , , .

, gcc -c graph.c. graph.c main().

+14

main , , .

, lib, main .

EDIT: this .

+5

, , . , , .

, main , , , .

. - :

gcc -o library.o -c library.c
gcc -o main.o -c main.c
gcc -o testprogram library.o main.o
+1

main() . main(), . - , .

+1

main . , C, . , ,

0

, , . , . , , , " ".

0

Source: https://habr.com/ru/post/1776634/


All Articles