2013-11-03 107 views
-2

我想爲我的程序創建一個makefile,由於某種原因,它根本不適用於頭文件,我搜索了網頁,並嘗試了幾十個makefile和命令,但無法使其工作。我有一個簡單的主文件:makefile與頭文件

#include <stdio.h> 
#include <stdlib.h> 
#include "func.h" 

int main(int argc, char *argv[]) { 
    printf("the number of params: %d\n" ,argc); 
    p(); 

    return EXIT_SUCCESS; 
} 

和我有頭文件:

#include <stdio.h> 
#include <stdlib.h> 

int p(); 

和func.c

#include "func.h" 
int p(){ 
    printf("p"); 
} 

我的makefile目前看起來是這樣的:

check: Excersize1.c func.c 
    gcc -o check Excersize1.c func.c 

問題是當文件檢查是c reated它does not運行功能p(),唯一的輸出是「的數量...」

任何幫助將意義重大。

注意:代碼很好用,可以作爲使用頭文件和創建支持它們的makefile的示例。

+7

你確定它沒有打印'p'?請注意,'p()'函數中的'printf()'不包含換行符,因此後面不會打印換行符。這意味着您的提示將被附加到它。也許你只是沒有注意到'p'在你的提示開頭?如果您沒有收到編譯或鏈接器錯誤,那麼必須打印'p' * MUST *。 – MadScientist

+0

@MadScientist你是對的先生!我錯過了。非常感謝你!! –

+1

你爲什麼不從'int p()'返回任何東西? – Zaffy

回答

0

你的問題不是標題,你的問題是標準輸出是行緩衝的。這意味着你不能保證在你寫行結束符之前輸出將被寫入。您的printf()main()有一個行結尾'\n',它立即出現。 p()中的輸出沒有,並且隨後沒有其他輸出發生。

試着改變你的func.h到

#include "func.h" 
int p(){ 
    printf("p\n"); 
} 

,你應該看到一個孤獨的p在輸出線自身。