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

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 7846 | 回復(fù): 9
打印 上一主題 下一主題

為什么一個project內(nèi)有很多main入口函數(shù)? [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2011-10-04 20:28 |只看該作者 |倒序瀏覽
問題如上所述。
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()

論壇徽章:
0
2 [報告]
發(fā)表于 2011-10-04 20:35 |只看該作者
這個project生成多個可執(zhí)行程序吧

論壇徽章:
0
3 [報告]
發(fā)表于 2011-10-04 20:36 |只看該作者
就是一個wget還會有多少個執(zhí)行程序?不是運行wget 后面就是參數(shù)了吧。

論壇徽章:
0
4 [報告]
發(fā)表于 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ù)制代碼

論壇徽章:
0
5 [報告]
發(fā)表于 2011-10-05 09:01 |只看該作者
那種不加define的main一般都是工程的main函數(shù):wink:

論壇徽章:
0
6 [報告]
發(fā)表于 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

論壇徽章:
0
7 [報告]
發(fā)表于 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)的功能)!



   

論壇徽章:
0
8 [報告]
發(fā)表于 2012-02-14 16:43 |只看該作者
回復(fù) 7# 847608498
多個main可能是為了編譯生成多個exe程序
或者說是為了生成一些測試代碼,其中很多main都是宏定義下聲明的,沒有包括在

  1. #ifdef _XX_

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

   

論壇徽章:
0
9 [報告]
發(fā)表于 2012-02-16 12:41 |只看該作者
回復(fù) 8# duanjigang


    那如何調(diào)用這個應(yīng)用程序呢?直接調(diào)用它生成的exe文件嗎?system();這個函數(shù)怎么用?主要是他的參數(shù)怎么寫?

論壇徽章:
0
10 [報告]
發(fā)表于 2012-03-25 22:09 |只看該作者
看makefile就知道了
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP