LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: 北南南北

Linux下C语言编程基础知识

[复制链接]
发表于 2003-4-27 13:10:20 | 显示全部楼层
谢谢,对我帮助很大
发表于 2006-5-22 01:56:29 | 显示全部楼层
Post by 北南南北
Linux下C语言编程基础知识
2.Makefile的编写
    假设我们有下面这样的一个程序,源代码如下:

/* main.c */
#include "mytool1.h"
#include "mytool2.h"

int main(int argc,char **argv)
{
mytool1_print("hello");
mytool2_print("hello");
}

/* mytool1.h */
#ifndef _MYTOOL_1_H
#define _MYTOOL_1_H

void mytool1_print(char *print_str);

#endif

/* mytool1.c */
#include "mytool1.h"
void mytool1_print(char *print_str)
{
printf("This is mytool1 print %s\n",print_str);
}

/* mytool2.h */
#ifndef _MYTOOL_2_H
#define _MYTOOL_2_H

void mytool2_print(char *print_str);

#endif

/* mytool2.c */
#include "mytool2.h"
void mytool2_print(char *print_str)
{
printf("This is mytool2 print %s\n",print_str);
}


当然由于这个程序是很短的我们可以这样来编译
gcc -c main.c
gcc -c mytool1.c
gcc -c mytool2.c
gcc -o main main.o mytool1.o mytool2.o
这样的话我们也可以产生main程序,而且也不时很麻烦.但是如果我们考虑一下如果有一天我们修改了其中的一个文件(比如说mytool1.c)那么我们难道还要重新输入上面的命令?也许你会说,这个很容易解决啊,我写一个SHELL脚本,让她帮我去完成不就可以了.是的对于这个程序来说,是可以起到作用的.但是当我们把事情想的更复杂一点,如果我们的程序有几百个源程序的时候,难道也要编译器重新一个一个的去编译?

我在编译main.c的时候,得到如下错误提示
In file included from main.c:2:
mytool1.h:2:2: invalid preprocessing directive #ifndef_MYTOOL_1_H
mytool1.h:3:2: invalid preprocessing directive #define_MYTOOL_1_H
mytool1.h:7:2: #endif without #if
In file included from main.c:3:
mytool2.h:2:2: invalid preprocessing directive #ifndef_MYTOOL_2_H
mytool2.h:3:2: invalid preprocessing directive #define_MYTOOL_2_H
mytool2.h:7:2: #endif without #if

请问为什么呢?
系统及机器配置在签名档里
回复 支持 反对

使用道具 举报

发表于 2006-5-22 15:24:39 | 显示全部楼层
解决了,是输入错误造成的
回复 支持 反对

使用道具 举报

发表于 2008-1-22 17:54:54 | 显示全部楼层
Thanks!
回复 支持 反对

使用道具 举报

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

本版积分规则

快速回复 返回顶部 返回列表