免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 7758 | 回复: 2
打印 上一主题 下一主题

为什么一个project内有很多main入口函数? [复制链接]

论坛徽章:
0
1 [报告]
发表于 2011-10-05 09:00 |显示全部楼层
呵呵,wget和curl,axel这种工具,最终会生成一个提供给用户的Exe
但是,不可避免会有多个main,因为有些是用于测试的,比如axel中search.c中就是这样的,但是他们是一般是不会与Axel的main冲突的,因为search.c中的main是用宏定义来声明的,要不然的话,如果.o链接进text.o中,编译器会报错的,多个main。

另外一点就是,确实是想编译多个工具,但是这多个c文件生成的.o文件是不会link到一起的。
楼主不妨按照我说的第一点去分析下不同main函数的作用,找找define宏是干啥的。
比如axel的search.c中这个

  1. #ifdef STANDALONE
  2. int main( int argc, char *argv[] )
  3. {
  4.         conf_t conf[1];
  5.         search_t *res;
  6.         int i, j;
  7.        
  8.         if( argc != 2 )
  9.         {
  10.                 fprintf( stderr, "Incorrect amount of arguments\n" );
  11.                 return( 1 );
  12.         }
  13.        
  14.         conf_init( conf );
  15.        
  16.         res = malloc( sizeof( search_t ) * ( conf->search_amount + 1 ) );
  17.         memset( res, 0, sizeof( search_t ) * ( conf->search_amount + 1 ) );
  18.         res->conf = conf;
  19.        
  20.         i = search_makelist( res, argv[1] );
  21.         if( i == -1 )
  22.         {
  23.                 fprintf( stderr, "File not found\n" );
  24.                 return( 1 );
  25.         }
  26.         printf( "%i usable mirrors:\n", search_getspeeds( res, i ) );
  27.         search_sortlist( res, i );
  28.         for( j = 0; j < i; j ++ )
  29.                 printf( "%-70.70s %5i\n", res[j].url, res[j].speed );
  30.        
  31.         return( 0 );
  32. }
  33. #endif
复制代码

论坛徽章:
0
2 [报告]
发表于 2011-10-05 09:01 |显示全部楼层
那种不加define的main一般都是工程的main函数:wink:

论坛徽章:
0
3 [报告]
发表于 2012-02-14 16:43 |显示全部楼层
回复 7# 847608498
多个main可能是为了编译生成多个exe程序
或者说是为了生成一些测试代码,其中很多main都是宏定义下声明的,没有包括在

  1. #ifdef _XX_

  2. #endif
复制代码
中的那个main才是工程的main函数

   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP