亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標題: 為什么一個project內(nèi)有很多main入口函數(shù)? [打印本頁]

作者: wangzhen11aaa    時間: 2011-10-04 20:28
標題: 為什么一個project內(nèi)有很多main入口函數(shù)?
問題如上所述。
hash.c:main (void)
html-parse.c:int main ()
netrc.c:main (int argc, char **argv)
test.c:main (int argc, char *argv[])
main.c:       main()
作者: Missex    時間: 2011-10-04 20:35
這個project生成多個可執(zhí)行程序吧
作者: wangzhen11aaa    時間: 2011-10-04 20:36
就是一個wget還會有多少個執(zhí)行程序?不是運行wget 后面就是參數(shù)了吧。
作者: duanjigang    時間: 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函數(shù)的作用,找找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
復(fù)制代碼

作者: duanjigang    時間: 2011-10-05 09:01
那種不加define的main一般都是工程的main函數(shù):wink:
作者: wangzhen11aaa    時間: 2011-10-05 15:37
回復(fù) 5# duanjigang
是啊。

在hash.c中
31 /* With -DSTANDALONE, this file can be compiled outside Wget source
32    tree.  To test, also use -DTEST.   如果加上DSTANDLONE,此文件在外面編譯。 */
33
34 #ifndef STANDALONE
35 # include "wget.h"
36 #endif

在html-parse.c
89 /* To test as standalone, compile with `-DSTANDALONE -I.'.  You'll
  90    still need Wget headers to compile.  */
  91
  92 #include "wget.h"
  93
  94 #ifdef STANDALONE
  95 # define I_REALLY_WANT_CTYPE_MACROS
  96 #endif
test.c中是TESTING
31 #include <stdio.h>
32
33 #include "test.h"
34
35 #ifndef TESTING
36 #error "TESTING not set!!!"
37 #endif
作者: 847608498    時間: 2012-02-10 11:18
回復(fù) 5# duanjigang
你好,我也在linux開發(fā)應(yīng)用程序時遇到了多個main函數(shù),但是這些main函數(shù)是如何被調(diào)用的?如何決定它被調(diào)用的時間,比如想加入一個led狀態(tài)燈(不同顏色表示移動設(shè)備的各種狀態(tài))的控制程序,有一個main函數(shù)main (int argc, char **argv),想在開發(fā)的這款移動設(shè)備開機時就開始運行這個應(yīng)用程序,就開啟led燈。那我新寫的這個應(yīng)用程序要怎么加載進來?另外這個main函數(shù)是帶參數(shù)的int argc, char **argv,它的參數(shù)是如何被傳遞進來的?是直接被調(diào)用嗎?但是我在里面看其他類似的應(yīng)用程序的main函數(shù)沒有被調(diào)用過(已實現(xiàn)的功能)。



   
作者: duanjigang    時間: 2012-02-14 16:43
回復(fù) 7# 847608498
多個main可能是為了編譯生成多個exe程序
或者說是為了生成一些測試代碼,其中很多main都是宏定義下聲明的,沒有包括在

  1. #ifdef _XX_

  2. #endif
復(fù)制代碼
中的那個main才是工程的main函數(shù)

   
作者: 847608498    時間: 2012-02-16 12:41
回復(fù) 8# duanjigang


    那如何調(diào)用這個應(yīng)用程序呢?直接調(diào)用它生成的exe文件嗎?system();這個函數(shù)怎么用?主要是他的參數(shù)怎么寫?
作者: Kallawa    時間: 2012-03-25 22:09
看makefile就知道了




歡迎光臨 Chinaunix (http://72891.cn/) Powered by Discuz! X3.2