/* atof example: sine calculator */
#include <stdio.h> /* printf, fgets */
#include <stdlib.h> /* atof */
#include <math.h> /* sin */ #define vfd_com_timeout_clear() do{vfd_com_cnt = 0;}while(0)
#define vfd_com_timeout_recount() do{vfd_com_cnt = 0;}while(0) /*
判断等待时间是否超时
*/
int is_eload_com_timeout(void)
{
//电子负载超过2s时间尚未反馈
if (1)
{
return 1;
}
else
{
return 0;
}
} int main ()
{
double n, m;
double pi = 3.1415926535;
char buffer[256] = {"000000.01212\n234"}; int vfd_com_cnt = 5;
printf("vfd_com_cnt = %d\n",vfd_com_cnt);
vfd_com_timeout_clear();
printf("vfd_com_cnt = %d\n",vfd_com_cnt); if (!is_eload_com_timeout())
{
printf("oooo\n");
}
else
{
printf("kkkkk\n");
} n = atof (buffer);
printf("n=%f\n", n);
m = sin (n * pi / 180);
printf ("The sine of %f degrees is %f\n", n, m);
return 0;
} int is_eload_com_timeout(void)
{ if (1)
{
return 1;
}
else
{
return 0;
}
} int main ()
{
double n, m;
double pi = 3.1415926535;
char buffer[256] = {"000000.01212\n234"}; int vfd_com_cnt = 5;
printf("vfd_com_cnt = %d\n",vfd_com_cnt);
do{vfd_com_cnt = 0;}while(0);
printf("vfd_com_cnt = %d\n",vfd_com_cnt); if (!is_eload_com_timeout())
{
printf("oooo\n");
}
else
{
printf("kkkkk\n");
} n = atof (buffer);
printf("n=%f\n", n);
m = sin (n * pi / 180);
printf ("The sine of %f degrees is %f\n", n, m);
return 0;
}

上文已经就将源代码和预编译后的比分文字合作一起了。

#define vfd_com_timeout_clear()     do{vfd_com_cnt = 0;}while(0)

这个代码我起初以为会有问题,应为括号里面是空的,

但是使用gcc -E .\atofc.c -o atofc.i后,发现直接替换了,因此该方法可以使用。

但是注意,宏定义不检查语法的,因此写宏定义的时候要格外小心。

#define的一个小技巧的更多相关文章

  1. POJ-3262 贪心的一个小技巧

    Protecting the Flowers Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 3204   Accepted: ...

  2. 快速掌握iOS API的一个小技巧

    快速掌握iOS API的一个小技巧 周银辉 iOS SDK和Developer Library中提供了各个类以及函数的帮助文档,这很棒,但要想了解整个库的大体结构(比如UIKit下有哪些类,他们的继承 ...

  3. 【flash】关于flash的制作透明gif的一个小技巧

    关于flash的制作透明gif的一个小技巧 或者说是一个需要注意的地方 1.导出影片|gif,得到的肯定是不透明的.2.想要透明背景,必须通过发布.3.flash中想要发布gif动画的话,不能有文字, ...

  4. 【每日一个小技巧】Python | input的提示信息换行输出,提示信息用变量表示

    [每日一个小技巧]Python | input的提示信息换行输出,提示信息用变量表示 在书写代码的途中,经常会实现这样功能: 请输入下列选项前的序号: 1.选择1 2.选择2 3.选择3 在pytho ...

  5. 针对ACM输出格式的一个小技巧(对格式错误说不!)

    printf("%d%c",bmax," \n"[i==n]); 上文中bmax为题目中需要输出的整形变量,可以脑补很多ans,max之类的,重点在于%c和后面 ...

  6. Scrapy 5+1 ——五大坑附送一个小技巧

    笔者最近对scrapy的学习可谓如火如荼,虽然但是,即使是一整天地学习下来也会有中间两三个小时的"无效学习",不是笔者开小差,而是掉进了深坑出不来. 在此,给各位分享一下作为一名S ...

  7. python笔记_查看函数调用栈的一个小技巧

    一.背景 最近在看一个开源框架的源码,涉及到的内容非常杂乱,有的函数不知道是在什么时候被谁给调用了?调用的时候传入了什么参数?为了解决这个问题,写了一个小的装饰器. 二.实现 这个装饰器函数主要参考了 ...

  8. Eclipse被卡死了或者失去响应了后分析根源的一个小技巧

    提升程序员工作效率的工具/技巧推荐系列 推荐一个功能强大的文件搜索工具SearchMyFiles 介绍一个好用的免费流程图和UML绘制软件-Diagram Designer 介绍Windows任务管理 ...

  9. C++模板类继承的一个小技巧

    先说一下background前段时间想实现一个Sqlite localstorage的功能,对应不同的Model 实体有不同的table, 每一次sql操作的函数签名中会有model实体中的struc ...

随机推荐

  1. Zuul学习笔记

    问题: 解决:(域名映射+前缀+禁止原来访问)

  2. 多生产者多消费者(第二种方式2.1)基于BlockingQueue

    public class Producer implements Runnable { //静态变量只初始化一次 private static AtomicInteger count = new At ...

  3. 统一封装json返回结果

    import org.codehaus.jackson.annotate.JsonIgnore; import org.codehaus.jackson.map.annotate.JsonSerial ...

  4. Word 自带公式使用方法技巧(11)

    1. 快捷命令 在Word中输入「Alt+=」,可以打开Word中自带公式编辑器.这个编辑器似乎没有什么特别,但其实 Word 2010 以后是支持 LaTeX 语法的.常用规则如下: 分号: a/b ...

  5. handy网络库源码阅读

    简洁易用的C++11网络库,From:https://github.com/yedf/handy 在整理过去的资料过程中,发现过去有关注过这一个网络库,简单看了一下属于轻量级的实现,因此本文将对该库进 ...

  6. C++的派生类构造函数是否要带上基类构造函数

    //public:Student(int s_age):People(s_age) //C++的派生类构造函数后面是否带上基类构造函数,取决于基类构造函数是否需要传入参数,如果要参数,就一定带上:不需 ...

  7. MySQL 总结篇 [在Oracle基础上学习的MySQL]

    一.学习环境 MySQL 5.7社区版 Navicat for MySQL 百度网盘下载链接:https://pan.baidu.com/s/1yGnznwoZ8CaMgrCsDBhKAQ 二.MyS ...

  8. [CF436D]Pudding Monsters

    题目大意:有一个长度为$2\times 10^5$的板,有$n(n\leqslant 10^5)$个格子$a_1,\dots,a_n$有布丁怪兽,一开始连续的怪兽算一个怪兽,有$m(m\leqslan ...

  9. CacheManager.Core

    GitHub地址:https://github.com/MichaCo/CacheManager CacheManager的优点: 让开发人员的生活更容易处理和配资缓存,即使是非常复杂的缓存方案. C ...

  10. c# 异步( Async ) 不是多线程

    c# 异步( Async ) 不是多线程   误解 async 在调试 xxxxAsync() 方法的时候,常常会看到调试器界面中会多出一些线程,直觉上误认为 Async 冠名的函数是多线程. 对于 ...