为什么在程序中主要是必要的
发布时间:2020-12-16 06:46:47 所属栏目:百科 来源:网络整理
导读:我制作了一个仍在开发中的程序.我没有故意在我的程序中声明main.因为我正在开发一个用于制作图形和其他算法的库,我将在我的程序中使用.在C中开发这样一个库的目的是解决书中给出的问题.算法Thomas H Coreman 如果有人想看,这是代码. #includestdio.h#include
我制作了一个仍在开发中的程序.我没有故意在我的程序中声明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 noden"); 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 4n"); scanf("%d",&dir); printf("Enter the data for graph noden"); 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 outn"); 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? 解决方法
为什么?因为标准这样说(大多数).
托管C环境需要主要功能(允许独立环境以他们喜欢的方式启动). 如果您正在开发一个库,那么您不需要为库本身使用main,但是如果没有库,您将无法将其转换为可执行文件(除了使用非便携式技巧).而且,至少,你应该有一个测试套件. 换句话说,您的库应该有一个大型测试套件,它由一个主函数控制(很可能是在一个单独的源文件或文件中),这样您就可以测试任何新工作和回归测试,以确保它没有填满旧作. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |