运算类实现 及 GNU Makefile基本结构
1.运算类的实现,代码如下:
(1)operator.cpp
#include<iostream> #include "operator.h" using namespace std; bool Operator::setOperator(char c)//注意指定是那个类的函数 { bool ret = true; if( ('+' == c) | ('-' == c) | ('*' == c) | ('/' == c) ) { Opm = c; } else { cout<<"Invalid operator => "<<c<<endl; ret = false; } return ret; } void Operator::setParameter(double d1, double d2) { m1 = d1; m2 = d2; } bool Operator::result(double& r)//利用引用来存储结果 { bool ret = true; switch( Opm ) { case '/': if( (-0.000000001 < m2) && (m2 < 0.000000001) ) { ret = false; } else { r = m1 / m2; } break; case '+': r = m1 + m2; break; case '*': r = m1 * m2; break; case '-': r = m1 - m2; break; default: ret = false; break; } return ret; }
(2)operator.h
#ifndef _OPERATOR_H_ #define _OPERATOR_H_ class Operator { private: char Opm;//操作符 double m1,m2;//操作数 public: bool setOperator(char c);//设置操作符 void setParameter(double d1, double d2);//设置操作数 bool result(double& r);//计算并且返回结果 }; #endif
(3)main.c
#include<iostream> #include<cstdlib> #include<cstdio> #include "operator.h" using namespace std; int main(int argc, char *argv[]) { double ret = 0; if(argc < 3) { cout<<"usage: ./operator parameter1 operator parameter2"<<endl; return 0; } char opr=*argv[2]; double parameter1=atoi(argv[1]); double parameter2=atoi(argv[3]); Operator op;//注意一定要记得用类来定义对象 op.setOperator(opr); op.setParameter(parameter1,parameter2); if(op.result(ret)) { cout<<parameter1<<opr<<parameter2<<"="<<ret<<endl;//打印结果为6 } cout<<"Press any key to continue..."<<endl; getchar(); return 0; }
(4)Makefile
#http://blog.csdn.net/ruglcc/article/details/7814546/ makefile总结 # 指令编译器和选项 CC=g++# 开发过程中所用的选项
CFLAGS = -g -Wall –ansi
# 发行时用的选项
# CFLAGS = -O -Wall –ansi TARGET = operator # 生成的目标文件 OBJS = main.o operator.o INC = -I ./ #指定头文件目录 $(TARGET) : $(OBJS) # @echo TARGET:$@ # @echo OBJECTS:$^ $(CC) -o $@ $^ clean: rm -rf $(TARGET) $(OBJS)
2.Makefile来告诉make命令如何编译和链接这几个文件。规则是:
1.如果这个工程没有编译过,那么我们的所有C文件都要编译并被链接。
2.如果这个工程的某几个C文件被修改,那么我们只编译被修改的C文件,并链接目标程序。
3.如果这个工程的头文件被改变了,那么我们需要编译引用了这几个头文件的C文件,并链接目标程序。
Makefile的规则
在讲述这个Makefile之前,还是让我们先来粗略地看一看Makefile的规则。
target... : prerequisites ...
command
...
...
-------------------------------------------------------------------------------
target也就是一个目标文件,可以是Object File,也可以是执行文件。还可以是一个标签(Label),对于标签这种特性,在后续的“伪目标”章节中会有叙述。
prerequisites就是,要生成那个target所需要的文件或是目标。
command也就是make需要执行的命令。(任意的Shell命令)
操作系统命令,一定要以一个Tab键作为开头。
posted on 2017-02-24 22:42 sheldon_blogs 阅读(246) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY