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 = ; if(argc < )
{
cout<<"usage: ./operator parameter1 operator parameter2"<<endl;
return ;
} char opr=*argv[];
double parameter1=atoi(argv[]);
double parameter2=atoi(argv[]);
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 ;
}

(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键作为开头。

最新文章

  1. beans.xml
  2. 阿里云自定义日记文件无法通过ftp下载
  3. Hello Bugs
  4. Hibernate中的一级缓存、二级缓存和懒加载(转)
  5. 如何给span设置高度宽度?
  6. jQuery性能优化的28个建议
  7. java基础复习之对于String对象,能够使用“=”赋值,也能够使用newkeyword赋值,两种方式有什么差别?
  8. Oracle三组难缠的hint no_unnest/unnest,push_subq,push_pred--平展化(转)
  9. poj1657---chessboard
  10. Swift实战-QQ在线音乐(第一版)
  11. 主要排序算法的Java实现
  12. Web Service进阶(四)WebService注解
  13. Eclipse常见设置
  14. vue重温之mint-ui------------点击事件绑定
  15. vs 为什么使用#include &quot;stdafx.h&quot;
  16. OO第一次博客总结
  17. Linux每天一个命令:grep
  18. 如何在本地搭建一个Android应用crashing跟踪系统-ACRA
  19. 接口测试工具-Jmeter使用笔记(三:管理请求服务器信息和Headers参数)
  20. Course List for Student

热门文章

  1. 使用“rz -be”命令上传文件至服务器;使用“sz 文件名”从服务器下载文件到本地
  2. XGBoost介绍
  3. linux文件系统(一)
  4. Fiddler拦截http请求修改数据
  5. pycharm安装步骤
  6. 『MXNet』第三弹_Gluon模型参数
  7. 3月19 HTML静态网页的制作
  8. vue项目中引入第三方框架
  9. svn: 提交终止
  10. 使用INTERSECT运算符