我做了一個仍在開發中的程序。我沒有故意在程序中聲明main。當我開發一個圖庫和其他算法時,我將在我的程序中使用它。在C語言中開發這樣一個庫的目的是爲了解決在介紹算法Thomas H Coreman 這裏是代碼,如果有人想看。爲什麼在程序中主要需要
#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;
}
當我編譯上述程序時,我得到以下錯誤。
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
這個錯誤是什麼意思,爲什麼我應該在我的程序中聲明main?
雅我想爲我的程序做一個庫,所以我會繼續編譯檢查代碼,所以我該怎麼做才能擺脫這些錯誤? – 2010-11-24 07:46:36
@Bond,我編輯了我的答案,並提供了一個鏈接,介紹如何構建靜態庫和共享庫。無論如何檢查代碼,你只能編譯它,並避免鏈接它。使用gcc -c graph.c作爲caf建議僅用於編譯。 – Jay 2010-11-24 12:48:07