2013-11-03 80 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在输出线自身。