Makefile万能通用版(C++和C混合编译也适用)[范文大全]

时间:2019-05-13 09:33:31下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《Makefile万能通用版(C++和C混合编译也适用)》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《Makefile万能通用版(C++和C混合编译也适用)》。

第一篇:Makefile万能通用版(C++和C混合编译也适用)

1.、该Makefile 是我自己写的,可用于编译均是.c文件的工程,基本不用修改什么东西。

2、将该文件拷贝到工程文件夹下,在终端执行:

#make create(将会在根目录下创建出include, src, bin 三个目录)

#make 即可编译

#make clean删除所有生成的中间文件和可执行文件

3、如果需要编译C++的.cpp和C语言的.c文件,即C、C++混合编译,将CC=gcc 改为CC=g++即可。(如果还不行,那就需要在.cpp文件的extern “C”中将被调用的.c声明一下,或者将所有.c文件做成成静态库,后者适合.c文件较多的情况)

CC=gcc

CFLAGS=-o

PARAM=-Wall

CUR=$(shell pwd)

SRC=$(CUR)/src

SRCS=$(SRC)/*.c

TARGET=$(CUR)/bin/exe

.PHONY:$(TARGET)

all:$(TARGET)

$(TARGET):$(SRCS)

$(CC)$^ $(CFLAGS)$@ $(PARAM)

clean:

@-rm-rf $(TARGET)

@-rm-rf $(CUR)/include/*~

@-rm-rf $(SRC)/*~

@-rm-rf $(CUR)/*~

create:

@-mkdir src/

@-mkdir include/

@-mkdir bin/

第二篇:VC++6.0中如何编译运行C语言程序

VC++6.0中如何编译运行C语言程序

VC++6.0是Microsoft公司推出的一个基于Windows系统平台、可视化的集成开发环境,它的源程序按C++语言的要求编写,并加入了微软提供的功能强大的MFC(Microsoft Foundation Class)类库。具有高度可视化的应用程序开发工具,不仅适合大型软件的开发,对于初学C语言和C++的朋友来说,也是一个不错的运行工具。

接下来笔者就简单介绍一下VC++6.0如何编译运行C语言程序

1.单个源文件的编译运行

例如下面的源代码

#include void main(){ int i,sum=0;for(i=1;i<=10;i++){ sum=sum+i;} printf(“sum=%dn”,sum);} 打开VC++6.0,如图1所示

(图1)

选择“文件”→“新建”,打开如图2所示

(图2)

选择“文件”项,如图3所示

(图3)

选择“C++ Source File”项,并在“文件名”项目下输入“sum.c”如图4所示

(图4)单击“确定”,打开如图5所示

(图5)

输入如上源代码,如图6所示

(图6)

选择“组建”→“编译”(或按Ctrl+F7组合键),打开如图7所示

(图7)

在下端的输出窗口会有错误和警告的提示,如果没有错误选择“组建”→“执行”(或按Ctrl+F5组合键)即可出现运行结果,如图8所示

(图8)

2.多个源文件的编译运行

以上是运行单个源文件的情况,但是在程序设计时,往往是由几个人各自独立编写不同的程序,显然这些程序是不能写在一起进行编译的,这时就需要建立项目工作区来完成几个独立程序的编译,具体方法如下。

首先建立两个文本文件,分别命名为“file1.c”和“file.c”,分别在两个文件中输入如下两个源代码,然后保存。源代码1:

#include void main(){

} void sum();sum();源代码2:

#include void sum(){

} int i,sum=0;for(i=1;i<=10;i++){ } printf(“sum=%dn”,sum);sum=sum+i;打开VC++6.0,选择“文件”→“新建”打开如图9所示

(图9)

选择“工作区”项,并在“工作空间名称”项目下输入“sum”如图10所示

(图10)单击“确定”,打开如图11所示

(图11)

在左侧的“工作区窗口”显示了新建立的工作区

选择“文件”→“新建”打开如图9所示,在“工程”项目下选择“Win32 Console Application”项,并在“工程名称”项目下输入工程名称,如“sum”,选择“添加到当前工作空间”项,如图12所示

(图12)

单击“确定”,打开如图13

(图13)

选择“一个空工程”项,单击“完成”,打开如图14所示

(图14)

单击“确定”,打开如图15所示

(图15)

在左侧的“工作区窗口”显示了新建立的工程

选择“工程”→“添加到工程”→“文件”,打开如图16所示

(图16)

选择刚刚创建的两个文件,单击“确定”,打开如图17所示

(图17)

选择“组建”→“组建”(或按F7键),打开如图18所示

(18)

在下端的输出窗口会有错误和警告的提示,如果没有错误选择“组建”→“执行”(或按Ctrl+F5)即可出现运行结果,如图19所示

(图19)

第三篇:C语言程序设计教案 第九章 编译预处理

第九章 编译预处理

课题:

教学目的: 教学重点: 教学难点: 第九章 编译预处理

1、了解预处理的概念及特点

2、掌握有参宏与无参宏的定义及使用,领会文件包含的使用及效果 掌握宏的使用,文件包含 有参宏与无参宏的使用

步骤一 复习引导

ANSI C标准规定可以在C源程序中加入一些“预处理命令”,以改进程序设计环境,提高编程效率。

这些预处理命令是由ANSI C统一规定的,但它不是C语言本身的组成部分,不能直接对它们进行编译。必须在对程序进行通常的编译之前,先对程序中这些特殊的命令进行“预处理”,即根据预处理命令对程序作相应的处理。经过预处理后程序不再包括预处理命令了,最后再由编译程序对预处理后的源程序进行通常的编译处理,得到可供执行的目标代码。

步骤二 讲授新课

C语言与其他高级语言的一个重要区别是可以使用预处理命令和具有预处理的功能。C提供的预处理功能主要有以下三种: 宏定义、文件包含、条件编译。

分别用宏定义命令、文件包含命令、条件编译命令来实现。为了与一般C语句相区别,这些命令以符号“ #” 开头。

§9.1宏定义

宏: 代表一个字符串的标识符。

宏名:被定义为“宏”的标识符。

宏代换(展开):在编译预处理时,对程序中所有出现的 “宏名”,用宏定义中的字符串去代换的过程。

一、不带参数的宏定义

一般形式:

#define

标识符

字符串

#define PI 3.1415926

main()

{ float l, s, r, v;

printf(“input radius:”);

scanf(“%f”, &r);

l = 2.0*PI*r;

s = PI*r*r;

v = 3.0/4*PI*r*r*r;

printf(“%10.4f,%10.4f,%10.4n”, l, s, v);

}

例如:由键盘输入y值,求表达式:

3(y2+3y)+ 4(y2+3y)+ y(y2+3y)#define M(y*y+3*y)main(){ int s, y;

printf(“Input a number :”);scanf(“%d”,&y);

s=3*M+4*M+y*M;

printf(“s=%dn”,s);} 先宏展开:s=3*(y*y+3*y)+4*(y*y+3*y)+ y*(y*y+3*y)再与源程序合并

说明:

⑴宏名一般用大写表示,以便与变量名区分。⑵使用宏名使程序易读,易修改。⑶只作简单的置换,不作正确性检查。⑷宏定义不是C语句,不必在行末加分号。

⑸宏名的作用域一般从自定义命令到本源文件结束。⑹可以用# undef命令终止宏定义的作用域。⑺宏定义允许嵌套,允许层层置换。

⑻宏名在源程序中用双引号括起来,则TC中预处理不对其作宏代换。

例: printf(“L=%f”, L);中双引号内L不替换。

⑼宏定义与定义的变量不同,宏只作字符替换,不分配内存空间。⑽对“输出格式”进行宏定义,可以减少书写麻烦 例如:

#define P printf #define D “%d,%d,%dn”

#define F “%6.2f,%6.2f,%6.2fn” main(){ int a=5,c=8,e=11;

float b=3.8,d=9.7;f=21.08;

P(D,a,c,e);

P(F,b,d,f);

P(F,a+b,c+d,e+f);}

二、带参数的宏定义

格式:#define

宏名(参数表)字符串

例:#define s(a,b)a*b

{……

area =s(3,2);

……}

对带参的宏展开后,为area=3*2;

例: #define M(y)y*y+3*y

{……

k=M(5);

……}

对其展开后,为k=5*5+3*5;

说明:

⑴对带参数的宏展开只是将宏名后括号内的实参

字符串代替#define命令行中的形参。

⑵宏定义时,在宏名与带参数的括号之间不应加

空格,否则将空格以后的字符都作为替代字符

串的一部分。

⑶带参宏定义,形参不分配内存单元,因此不必

作类型定义。(与函数的区别之一)⑷带参宏与函数的区别之二:

例如: main(){ int i=1;

while(i<=5)

printf(“%dt”,SQ(i++));} SQ(int y){ return(y)*(y);} 其结果为:1

如:

#define SQ(y)((y)*(y))main(){ int i =1;

while(i<=5)

printf(“%dt”,SQ(i++));} 运行结果: 2 12 30

例:利用宏定义求两个数中的大数。

#define MAX(a,b)(a>b)?a:b main(){int x, y, max;

scanf(“%d%d”, &x, &y);

max =MAX(x, y);

printf(“max=%dn”, max);} 带参的宏定义和函数不同:

1、函数调用时,先求实参表达式值,后代入。而带参的宏只是进行简单的字符替换。

2、函数调用是在程序运行时处理的,分配临时的内存单元。而宏展开则是在编译时进行的,不分配内存单元,不进行值的传递,也无“返回值”。

3、对函数中的实参和形参都要定义类型,类型应一致。而宏不存在类型问题,宏名和参数无类型,只是一个符号代表,展开时代入指定的字符即可。

4、调用函数只可得到一个返回值,而用宏可以设法得到几个结果。

5、使用宏次数多时,宏展开后使源程序增长,而函数调用不使源程序变长。

6、宏替换不占运行时间,只占编译时间。

而函数调用则占用运行时间(分配单元、保留现场、值传递、返回)一般用宏代表简短的表达式比较合适。

也可利用宏定义实现程序的简化。例9.5:

#define PR printf #define NL “n” #define D “%d” #define D1 D NL #define D2 D D NL #define D3 D D D NL #define D4 D D D D NL #define S “%s” main(){ int a,b,c,d;

char string[]=“CHINA”;

a=1;b=2;c=3;d=4;

PR(D1,a);

PR(D2,a,b);

PR(D3,a,b,c);

PR(D4,a,b,c,d);

PR(S, string);}

§9.2 “文件包含”处理

“文件包含”处理是指将指定的被包含文件的全部内容插到该控制行的位置处,使其成为源文件的一部分参与编译。因此,被包含的文件应该是源文件。通常置于源程序文件的首部,故也称为“头文件”。

C编译系统提供的头文件扩展名为“.h”,但设计者可根据实际情况,自行确定包含文件的后缀、名字及其位置。

一般形式,#include “文件名”

#include <文件名>

文件format.h

#define PR printf #define NL “n” #define D “%d” #define D1 D NL #define D2 D D NL #define D3 D D D NL #define D4 D D D D NL #define S “%s” 文件file1.c #include “format.h” main(){ int a,b,c,d;

char string[]=“CHINA”;

a=1;b=2;c=3;d=4;

PR(D1,a);

PR(D2,a,b);

PR(D3,a,b,c);

PR(D4,a,b,c,d);

PR(S, string);} 注:被包含的文件应是源文件,而不应是目标文件。

头文件除了可以包含函数原型和宏定义外,也可以包括结构体类型定义和全局变量定义等。说明:

1、一个include命令只能指定一个被包含文件,如果要包含n个文件,要用n个include命令。

2、如果文件1包含文件2,而文件2中要用到文件3的内容,则可在文件1中用两个include命令分别包含文件2和文件3,而且文件3应出现在文件2之前,即在“file1.c”中定义:

#include “file3.h”

#include “file2.h”

3、在一个被包含文件中又可以包含另一个被包含文件,即文件包含是可以嵌套的。

4、被包含文件(file2.h)与其所在的文件(file1.c),在预编译后已成为同一个文件。

5、在#include 命令中,文件名可以用双引号或尖括号括起来。

如: #include

#include “file2.h” 二者的区别:

用尖括号时称为标准方式,系统到存放C库头文件所在的目录中寻找要包含的文件。

用双引号时,系统先在用户当前目录中寻找要包含的文件,若找不到,再按标准方式查找。#include “c:tcincludemyfile.h”

/*正确*/ #include

/*正确*/ #include

/*错误*/

用尖括号:带路径:按指定路径去寻找被包含文件,但此时被包含文件不能以“.h”结尾,否则错误。

不带路径:仅从指定标准目录下找。

用引号: 带路径:按指定路径去寻找被包含文件,不再从当前目录和指定目录下找。

不带路径:先在当前目录下找,找不到再在系统指定的标准目录下找。

步骤三 课堂小结

本课主要讲解了宏定义、“文件包含”处理。对带参数的宏的使用,及与函数的使用的区别。搞清经常使用的头文件。

步骤四 布置作业 上机作业:(第九章课后练习)9.4 书面作业:(第九章课后练习)9.7、9.8

第四篇:C语言也能干大事

1.格式:MessageBox(NULL,TEXT(“”),TEXT(“”),MB_OKCANCEL|MB_ICONQUESTION);

2.按钮:MB_OK,MB_OKCANCEL,MB_YESONCANCEL,MB_RETRYCANCEL,MB_ABORTRETRYIGNORE;

确定,确定取消,是否取消,重试取消,终止,重试忽视

3.图标:MB_ICONHAND,MB_ICONQUESTION,ICONEXCLAMATION(感叹),MB_ICONASTERISK;

4.取返回值

int ret=MessageBox(NULL,TEXT(“”),TEXT(“”),MB_OKCANCEL|MB_ICONQUESTION);if(IDOK==ret){}else{};

5.C语言(网络,数据库,图形学,内核等)一通百通,一切语言都是纸老虎。如鹏网!

6.怎样把程序发给别人(debug,release);将debug转成release,从新编译.

第五篇:《c语言程序设计新视角》第九章编译预处理小结

《c语言程序设计新视角》第九章 编译预处理小结 编译是把语句翻译成机器码,预编译是在译码前进行的处理法,文件包含把已有的文件为我所用来添加,宏定义的作用是替换,方便程序编辑的好方法,条件编译可实现按需编译,方便调试让代码适应性更佳。

下载Makefile万能通用版(C++和C混合编译也适用)[范文大全]word格式文档
下载Makefile万能通用版(C++和C混合编译也适用)[范文大全].doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    【好程序员学习笔记】C语言 编译预处理命令

    文件包含: 把指定的文件插入到预处理命令行所在的位置并取代该命令行,即把指定的文件和当前的源程序文件连接成一个源文件。 #include 在文件包含目录中去查找指定的文件,并将......

    解决Visual C++ 编译器中混合 .c 文件时收到 C1853 预编译头错误的方法

    解决Visual C++ 编译器中混合 .c 文件时收到 C1853 预编译头错误的方法 当 Visual C++ 项目启用了预编译头 (Precompiled header) 功能时,如果项目中同时混合有 .c 和 .cpp......

    实验二语言与C语言混合编程

    实验二汇编语言与C语言混合编程一、教学目的和要求   熟悉ADS1.2开发环境编译、下载、调试程序的基本过程; 掌握C和汇编语言混合编程方法。 掌握ATPCS中的寄存器及参数传递规......

    C语言与语言混合编程DSP设计(推荐)

    实验2:C与汇编语言混合编程 一.实验目的 掌握一种典型的C语言与汇编语言的混合编程方法。 二.实验设备 PC兼容机一台,操作系统为Windows2000,安装Code Composer Studio 4.2软件。......

    c语言也能干大事第11节

    板书:这节课是自己动手写QQ、自己动手写飞鸽传书的基础,以后想从事网络开发、信息系统开发、游戏开发、嵌入式系统开发等的同学必须学习。演示一个简单的和网易Email服务器对......

    C语言也能干大事1板书[精选]

    板书: 第一节1、C语言不是只能开发黑底白字的控制台界面程序。学习本课的基础:本课程不讲C语言基础知识,C语言考及格,学的过程中配合复习,有不懂的回去翻书。2、学完本课程以后同......

    干部任免票决制也需岗位适用

    干部任免票决制也需岗位适用 只有针对实际情况,选用对应的选人用人办法,各个制度才会相得益彰,在整体上形成制度合力。如果不能做到这一点,这些制度就可能被乱点鸳鸯谱,用的不是......

    C课程设计矩阵的加减乘混合运算

    矩阵混合运算 指导教师: 浙江理工大学 班级:学号: 姓名: 矩阵混合运算 目 录 一、 程序要求 二、 输入输出范例 三、 程序结构分析及关键函数说明 四、 程序代码与说明 五、 运......