#define的一个小技巧
/* 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的一个小技巧的更多相关文章
- POJ-3262 贪心的一个小技巧
Protecting the Flowers Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 3204 Accepted: ...
- 快速掌握iOS API的一个小技巧
快速掌握iOS API的一个小技巧 周银辉 iOS SDK和Developer Library中提供了各个类以及函数的帮助文档,这很棒,但要想了解整个库的大体结构(比如UIKit下有哪些类,他们的继承 ...
- 【flash】关于flash的制作透明gif的一个小技巧
关于flash的制作透明gif的一个小技巧 或者说是一个需要注意的地方 1.导出影片|gif,得到的肯定是不透明的.2.想要透明背景,必须通过发布.3.flash中想要发布gif动画的话,不能有文字, ...
- 【每日一个小技巧】Python | input的提示信息换行输出,提示信息用变量表示
[每日一个小技巧]Python | input的提示信息换行输出,提示信息用变量表示 在书写代码的途中,经常会实现这样功能: 请输入下列选项前的序号: 1.选择1 2.选择2 3.选择3 在pytho ...
- 针对ACM输出格式的一个小技巧(对格式错误说不!)
printf("%d%c",bmax," \n"[i==n]); 上文中bmax为题目中需要输出的整形变量,可以脑补很多ans,max之类的,重点在于%c和后面 ...
- Scrapy 5+1 ——五大坑附送一个小技巧
笔者最近对scrapy的学习可谓如火如荼,虽然但是,即使是一整天地学习下来也会有中间两三个小时的"无效学习",不是笔者开小差,而是掉进了深坑出不来. 在此,给各位分享一下作为一名S ...
- python笔记_查看函数调用栈的一个小技巧
一.背景 最近在看一个开源框架的源码,涉及到的内容非常杂乱,有的函数不知道是在什么时候被谁给调用了?调用的时候传入了什么参数?为了解决这个问题,写了一个小的装饰器. 二.实现 这个装饰器函数主要参考了 ...
- Eclipse被卡死了或者失去响应了后分析根源的一个小技巧
提升程序员工作效率的工具/技巧推荐系列 推荐一个功能强大的文件搜索工具SearchMyFiles 介绍一个好用的免费流程图和UML绘制软件-Diagram Designer 介绍Windows任务管理 ...
- C++模板类继承的一个小技巧
先说一下background前段时间想实现一个Sqlite localstorage的功能,对应不同的Model 实体有不同的table, 每一次sql操作的函数签名中会有model实体中的struc ...
随机推荐
- c+11 std::condition_variable and mutex
multiple threads synchronization primitive: 多线程同步语义 多线程的同步语义是多线程编程的核心,线程之间通过同步语义进行通信,实现并发.C++ JAVA 中 ...
- JavaScript有用的代码片段和trick
浮点数取整 const x = 123.4545; x >> 0; ~~x; x | 0; Math.floor(x); 注意:前三种方法只适用于32个位整数,对于负数的处理上和Math. ...
- 基于卷积神经网络的人脸识别项目_使用Tensorflow-gpu+dilib+sklearn
https://www.cnblogs.com/31415926535x/p/11001669.html 基于卷积神经网络的人脸识别项目_使用Tensorflow-gpu+dilib+sklearn ...
- Python-11-生成器
一.定义 可以理解为一种数据类型,这种数据类型自动实现了迭代器协议(其他数据类型需要调用__iter__方法),所以生成器就是一种迭代器. 二.生成器的两种形式 1. 生成器函数 使用yield代替r ...
- 【LEETCODE】37、122题,Best Time to Buy and Sell Stock II
package y2019.Algorithm.array; /** * @ProjectName: cutter-point * @Package: y2019.Algorithm.array * ...
- Java中Date时区的转换
1.Date中保存的是什么? 在java中,只要我们执行 Date date = new Date(); 就可以得到当前时间.如: Date date = new Date(); System.ou ...
- Chart 文件结构
一个 Chart 包由以下几个配置文件组成: wordpress/ Chart.yaml # Yaml文件,用于描述 Chart 的基本信息,包括名称版本等 LICENSE # [可选] 文本格式的协 ...
- Unity的学习笔记(XLua的初学用法并在lua中使用unity周期函数)
自己最近也在研究怎么用lua控制UI,然后看着网上介绍,决定选用XLua,毕竟TX爸爸出的,有人维护,自己琢磨着怎么用,于是弄出来一个能用的作为记录. 当然,XLua主要是用于热更新,我自己是拿来尝试 ...
- 【转】Redis 基础操作和命令
笔记 Redis提供了六种基本的数据结构:String,Hash,List,Set,Sorted Set,HyperLogLog. Redis的特点:纯内存操作,单线程工作模型,非阻塞I/O多路复用. ...
- ESP8266 智能家居简单实现
本文转自CSDN,地址 https://blog.csdn.net/jsagacity/article/details/78531819 全文如下 : 前段时间,公司利用 ESP8266 这个WiFi ...