C
文章平均质量分 64
Qt君
生命不息,奋斗不止!
展开
-
if语句使用建议
if语句内的判断的类型应该是布尔类型,使用非布尔类型判断非常容易出错。比如: 下面代码判断字符串不相同,很自然就用了逻辑!,实际上用法是错误的。if (!strcmp(str1, str2)) { } 因为strcmp返回的是int类型:如果返回值小于0,则表示str1小于str2。如果返回值等于0,则表示str1等于str2。如果返回值大于0,则表示str1大于str2。不要使用双重否定,因为它会让人多做思考,不够直观。比如: 判断两个字符串是否相等,你会发现,增加了!判.原创 2021-11-18 22:54:16 · 2190 阅读 · 0 评论 -
字符串使用的小误区
一不小心就踩坑了。原创 2020-01-06 00:29:14 · 210 阅读 · 0 评论 -
int* i和int *i那种更好
你认为那个更好?原创 2019-12-18 23:41:35 · 862 阅读 · 0 评论 -
总结if/elif/else/endif宏之间的嵌套关系
先前写的一个工具(Qml宏预处理工具)就顺便总结一下if/elif/else/endif之间的嵌套关系,并整理成表。原创 2019-11-12 23:34:11 · 1713 阅读 · 0 评论 -
qDebug | std::cout | printf性能表现
Qt君最近感觉qDebug相对于printf打印感觉有些慢,但又没有证据,于是闲着就写下qDebug,std::cout,printf的性能表现咯。注:测试数据仅供参考。原创 2019-10-17 19:47:38 · 1520 阅读 · 2 评论 -
浮点数与十六进制互相转换
利用强制转换类型实现。原创 2019-09-07 23:33:58 · 6101 阅读 · 5 评论 -
取消宏定义
今天遇到一个问题是:重复宏定义。想到的解决方法是使用undef取消该重复宏。原创 2019-10-04 23:35:54 · 1474 阅读 · 0 评论 -
结构体位域
C语言允许在结构体中以位为单位设置成员所占的内存空间。以位为单位的成员,简称为位域或位段。其优点是较少的位数存储数据从而节省空间,还可以进行内存对齐。原创 2019-10-09 23:16:00 · 1357 阅读 · 0 评论 -
关于是否需要使用获取错误代码接口的思考
常用的编程方式对于错误码的最多方式是通过返回值。通过一系列的示例来引发示例3的返回值接口思考。常用获取错误代码方式通过返回ErrorCode获得错误码。ErrorCode exec();通过返回一个string获得错误码字符串。string exec();还有一些方式是通过额外的getErrorCode和errorCode这类的名字接口获取错误代码。list<...原创 2019-05-18 23:22:32 · 452 阅读 · 0 评论 -
C/C++黑魔法-神奇蝌蚪运算符
C/C++存在一种神奇的生物-蝌蚪.蝌蚪(运算符)游向该变量自动加1,游离则自动减1.原创 2019-03-05 14:04:45 · 700 阅读 · 0 评论 -
C/C++/Qt屏蔽输出流技巧
教大家如何屏蔽printf,cout,qDebug等打印信息。原创 2019-08-15 23:41:03 · 1255 阅读 · 0 评论 -
避免写头文件后缀的写法
避免写头文件后缀的写法。原创 2019-08-10 23:47:00 · 261 阅读 · 0 评论 -
10进制与16进制字符串互转
使用sprintf与strtoull函数实现互转操作。原创 2019-08-19 23:32:59 · 1470 阅读 · 0 评论 -
C/C++黑魔法-没有临时值的交换
使用XOR异或运算符可以做的一件很酷的事情"没有临时值的交换"。原创 2019-03-18 21:35:44 · 236 阅读 · 0 评论 -
C语言骚操作之没有加法运算符
利用数学运算符实现不使用加法运算符实现加法的操作。原创 2019-03-21 21:39:56 · 358 阅读 · 0 评论 -
C/C++黑魔法-常量字符串连接
使用方便的字符串常量连接。原创 2019-03-24 21:20:32 · 979 阅读 · 0 评论 -
C/C++黑魔法-防御性编程
在使用常数作为比较的时候往往会将x == 0写作x = 0,会使得程序陷入错误,由此我们可以使用编译器特性。原创 2019-03-16 17:31:25 · 489 阅读 · 0 评论 -
C/C++黑魔法-自动关闭文件描述符
利用宏与for循环特性自动关闭文件描述符,用来避免用户经常忘记关闭文件描述符的问题。原创 2019-03-15 22:05:14 · 957 阅读 · 0 评论 -
C/C++黑魔法-编译期运行的sizeof
本文介绍sizeof内执行的表达式会在编译期运行原创 2019-03-10 22:09:45 · 785 阅读 · 0 评论 -
C/C++黑魔法-不会出错的http
在C99标准中,可以直接将URL嵌入到函数内的源代码中原创 2019-03-09 22:05:17 · 336 阅读 · 0 评论 -
解决使用ptlib库编译"realloc"参数不足问题
解决使用ptlib库导致的编译错误qlist.h(98): warning C4003: 类函数宏的调用“realloc”参数不足的问题。原创 2019-03-13 21:45:35 · 894 阅读 · 0 评论 -
C/C++趋向运算符
趋向运算符主要由`-->`或`<--`组成,让一个变量趋向于某个值.原创 2019-03-03 22:13:03 · 1954 阅读 · 4 评论 -
C语言逗号运算符
逗号运算符表达式取最后一个值返回。特点优先级别最低;自左往右执行表达式;返回值为表达式最后一个.例子1输出: 5printf("%d", (1, 2, 3, 4, 5));例子2赋值运算符优先级高于逗号运算符;先执行i=3*3后再执行i*5;输出: 45.int i = 0;printf("%d\n", (i = 3*3 , i*5));例子3输...原创 2019-02-21 21:36:06 · 12251 阅读 · 6 评论 -
Doxygen文档系统简单使用
按照规范的格式注释源代码,用工具处理注释过的源代码产生文档.便于代码和文档保持同步,可以对文档做版本管理.注释风格/** * ...多行注释... * */ /** ...单行注释... */文件注释/** * @file xxx * @author xxx * @version xxx * @date xxxx/xx/xx * * @section LICE...原创 2019-02-05 23:34:05 · 264 阅读 · 0 评论 -
断言宏assert
assert()宏主要用于辅助测试程序;assert()宏当表达式求值为假(非零)时,assert()宏就在标准错误流(stderr)写入一条错误信息(包括出错文件与行号)并调用abort()函数终止程序;头文件assert.h源代码 #if defined(_UNICODE) || defined(UNICODE)#define assert(_Expression) \ (vo...原创 2019-01-27 21:33:20 · 565 阅读 · 0 评论 -
关于popen需要注意的问题
头文件1#include <stdio.h> 函数1FILE * popen ( const char * command , const char * type );2int pclose ( FILE * stream ); 注意 正确关闭由popen打开的I/O流使用pclose函数,不能使用fclose函数,否则就会造成僵尸进程。...翻译 2019-01-09 21:33:48 · 4096 阅读 · 0 评论 -
C语言之变参数宏代替printf
#define LOG( format, ... ) printf( format, __VA_ARGS__ )1 VA_ARGSVA_ARGS是系统预定义宏,被自动替换为参数列表经常需要进行输出格式化,重定义操作时,可以使用以上技巧;2 示例代码#include <stdio.h>#define LOG( format, ... ) printf( form...原创 2019-01-20 22:46:27 · 761 阅读 · 0 评论 -
C/C++之switch范围判断
1. switch范围判断用法,使用’…'符#include <iostream>int main(int argc, char *argv[]){ int i = 5; switch (i) { case 0 ... 3: std::cout<<"0-3: "<<i<<std::e...原创 2019-01-18 21:48:16 · 11307 阅读 · 6 评论 -
C/C++魔法宏
1. 魔法宏_LINE_ : 代表该行代码的所在行号;_FILE_ : 代表源文件的文件名;_DATE_ : 代表该源文件被编译的(月 日 年)日期格式;_TIME_ : 代表该源文件被编译的(时:分:秒)时间格式;_FUNCTION_ : 代表该源代码中插入当前所在函数名称;_STDC_ : 当该程序严格遵循ANSI C标准时该标识被赋值为1;__cplusplus:当编写的...原创 2019-01-17 22:43:42 · 494 阅读 · 0 评论 -
C语言大小写转换宏
#define _toupper(c) ((c)+'A'-'a')#define _tolower(c) ((c)+'a'-'A')翻译 2018-12-31 23:13:22 · 2285 阅读 · 0 评论 -
解决一个运行时错误的问题
解决由于程序删除内存方式写得不恰当导致的运行时错误。原创 2019-03-22 21:13:44 · 6093 阅读 · 0 评论 -
C/C++黑魔法-三字母彩蛋
三字母(`trigraphs`)使用三个特殊的符号解析为对应符号的例如`??(`映射为`]`原创 2019-03-31 22:47:33 · 591 阅读 · 0 评论 -
编译即崩坏(无用的尝试)
尝试添加以下语句编译将会导致编译器无限循环包含而崩溃。原创 2019-08-09 23:35:42 · 170 阅读 · 0 评论 -
头铁小君使用死循环
头铁小君和小张争论用`for(;;)`好还是`while(true)`好。原创 2019-07-18 23:50:24 · 223 阅读 · 0 评论 -
存在i+1小于i
i为整数,在数学代数中i+1比i大,但是在编程上却不尽是,来看看什么原因吧。原创 2019-07-15 21:58:29 · 747 阅读 · 0 评论 -
Qt处理Excel的一些库
收集一些操作Excel的库。原创 2019-06-27 10:26:50 · 5126 阅读 · 2 评论 -
破除匪夷所思bugs,从修正编译警告开始
交付软件给客户却是很多问题,一些问题解决就可以了。但有些问题却是一时出现,一时不出现,十分令人恼火,程序猿是超人也难以应付。本文以编译警告为引入点述说在开发过程中的匪夷所思的问题。引以为鉴,重视警告的影响。原创 2019-06-23 22:45:39 · 5258 阅读 · 0 评论 -
浅谈警告即错误
编译警告给人的感觉是让人注意这个问题。更有甚者认为,编译警告只不过是给过分小心的人看。事实上为什么会有警告这一个问题本身值得我们去思考?原创 2019-06-08 23:31:03 · 600 阅读 · 0 评论 -
关于字符串输出的另类探讨
对使用`STR(...) #__VA_ARGS__`宏输出的字符串的探讨,别有一番风味。原创 2019-05-29 22:40:14 · 151 阅读 · 0 评论 -
malloc与calloc
在gcc编译器中malloc与calloc它们都是实现内存分配。但是也有点小区别,就是malloc分配内存不会将数据清零,而calloc则会将数据清零。原创 2019-05-10 22:12:02 · 4758 阅读 · 0 评论