
c与c++
fxbjye
c++软件开发者
展开
-
#define 定义多行
今天项目中需要定义一个宏,展示多行代码。#define 定义一行很简单,定义多行还是有点麻烦的,下面根据代码讲解我遇到的一些坑。自定义结构体InternalTimetypedefstructInternalTime{structtimevaltimeStart;structtimevaltimeEnd;}InternalTime;1,定义一行#defineGetStartTime(internalTime)gettimeofday(&...原创 2021-03-30 17:01:02 · 2520 阅读 · 0 评论 -
十六进制RGB分色值转unsigned int
现在需要将R,G,B 三个分量的值成一个unsigned int 型的RGB值。int colorR = 255;int colorG = 254;int colorB = 253;unsigned int color = 0;color = colorR<<16&0xff0000;color += colorG<<8&0x00ff00;color += colorB&0x0000ff;...原创 2021-03-25 18:49:59 · 391 阅读 · 0 评论 -
十六进制字符串转整型
最近做个项目需要将十六进制字符串转成整型,具体实现如下:1,字符串统一转小写int tolower(int c) { if (c >= 'A' && c <= 'Z') { return c + 'a' - 'A'; } else { return c; } } 2,字符串转整型int htoi(char s[]) { int ...原创 2021-03-25 18:37:00 · 2659 阅读 · 0 评论 -
win32 获取系统dpi
#include <windows.h>//获取系统dpiint get_system_dpi(void){ //加载系统库user32.dll HMODULE hUser32 = LoadLibrary(TEXT("user32.dll")); SetProcessDPIAwareFn *ptr; int hdpi, vdpi; HDC desktopDC; //获取SetProcessDPIAware系统函数地址 ptr ...原创 2021-03-03 11:28:32 · 931 阅读 · 1 评论 -
vc 打开文件对话框获取选择文件路径
#include<Windows.h>int getfilename(wchar_t *buf, int len){ OPENFILENAME ofn; buf[0] = 0; memset(&ofn, 0, sizeof(OPENFILENAME)); ofn.lStructSize = sizeof(OPENFILENAME); ofn.hwndOwner = NULL;//窗体父类 ofn.lpstrFile = buf;//文...原创 2021-03-03 11:37:12 · 414 阅读 · 0 评论 -
jni 交叉编译 android 平台下使用
一,准备工作:1)下载android ndk包,解压2)下载交叉编译工具链 1,cd ./android-ndk-r15c 2,./build/tools/make-standalone-toolchain.sh --package-dir=/home/fxb/open_source/ndk_tools/ --toolchain=arm-linux-androideabi-4.8 3,tar xjvf arm-linux-androideabi.tar.bz2 ...原创 2020-05-29 17:30:11 · 299 阅读 · 0 评论 -
volatile
1)编译器的优化:在本次线程内,当读取一个变量时i,为了提高存取速度,编译器优化时有时会先把变量读取到一个寄存器中;以后,再取变量时,就直接从寄存器中取值;当变量值在本线程里改变时,会同时把变量的新值copy到该寄存器中,以保持一致。当变量在因别的线程等而改变了值,该寄存器的值不会相应改变,从而造成应用程序读取的值和实际的变量值不一致。2)voLatile:直接存取原始内存地址...原创 2018-08-31 15:48:30 · 123 阅读 · 0 评论 -
memcpy和memmove实现
void *memcpy(void *dst,const void *src,size_t count){ void *ret = dst; while(count--) { *(char*)dst = *(char*)src; dst = (char*)dst + 1; src = (char*)src + 1; ...原创 2018-08-31 15:50:40 · 183 阅读 · 0 评论 -
strtok 详解及实现
1)strtok 头文件<string.h>2)原型 :char *strtok(char *str,const char *delimiters)3)功能:切割字符串str,将str分割成以delimiters为分割点的一个个字串,并返回4)用法: char str[128] = "hello@world@I@love@you"; char...原创 2018-11-05 11:45:27 · 3623 阅读 · 0 评论 -
c语言读写二进制文件
1,写二进制文件:FILE *f_out= NULL;//声明文件句柄f_out= fopen("c://aaa.txt","wb");//打开文件句柄if(f_out == NULL) return;fwrite(dataArray,sizeof(unsigned char),count,f_out);//写数据,参数:源数据,块大小,数据长度,文件句柄f...原创 2019-04-03 14:12:33 · 6279 阅读 · 0 评论 -
构造函数和析构函数小结
构造函数是一种特殊的类成员函数,在创建类对象时被调用。构造函数的名称和类名相同,但通过函数重载,可以创建多个同名的构造函数,条件是每个函数的参数列表都不同。构造函数没有声明类型。Bozo(const char *fname,const char *name);//构造函数原型初始化新对象:1. Bozo bozettoa = Bozo("Bozetta","Biggens");2....原创 2018-11-13 17:53:38 · 269 阅读 · 0 评论 -
goto语句的正确运用
最近学习obs源码,插件库里是有许多goto语句,由于对goto语句不太了解,踩了很多坑。记录一下:1 含义,goto语句也称为无条件转移语句;goto语句的语义是改变程序流向, 转去执行语句标号所标识的语句;goto语句通常与条件语句配合使用。可用来实现条件转移, 构成循环,跳出循环体等功能。2 例子1)跳出循环void main(){ int i, j; for ( i = 0;...原创 2018-05-30 09:52:00 · 25948 阅读 · 2 评论 -
(void)变量
今天遇到了(void)变量,实在是不明白,百度了一下,终于理解了。这只是一种防止编译器编译时报警告的用法。有些变量如果未曾使用,在编译时是会报错,从而有些导致编译不过,所以才会出现这种用法。而此语句在代码中没有具体意义,只是告诉编译器该变量已经使用了。#define UNUSED_PARAMETER(param) (void)paramvoid gs_draw_cube_backdrop(原创 2018-01-03 13:54:24 · 1123 阅读 · 1 评论 -
类型的良性重定义
类型的良性重定义原因:函数声明原创 2017-12-19 11:42:07 · 1918 阅读 · 0 评论 -
c下的不常用的字符串操作
1)strnicmp,strncmpi,_strnicmp原型:extern int strnicmp(char *s1,char * s2,int n);用法:#include 功能:比较字符串s1和s2的前n个字符但不区分大小写。参数说明:s1,s2 字符串,n 要比较的前n个字符说明:strncmpi是到strnicmp的宏定义 当s1<s2时,返回值<0原创 2017-07-25 10:42:58 · 452 阅读 · 0 评论 -
static_cast,dynamic_cast,const_cast,reinterpret_cast使用总结
1)c++类型转换分为两种:1, 隐式转换:如int 转float,float转double2, 显式转换:四种显式转换类型:static_cast,dynamic_cast,const_cast,reinterpret_cast2)static_cast:转换格式:static_cast(expression)功能:主要用于非多态类型间的转换,不提供运行时的检查来保证原创 2017-07-26 16:08:16 · 518 阅读 · 0 评论 -
typename和class
1)在模板定义语法中关键字class与typename的作用完全一样。2)typename另外一个作用为:使用嵌套依赖类型(nested depended name),如下所示:class MyArray { public:typedef int LengthType;.....}templatevoid MyMethod( T myarr ) { typedef ty原创 2017-07-26 17:41:28 · 334 阅读 · 0 评论 -
windows 获取当前用户的sid
1)cmd命令查询2)代码获取char userName[MAX_NAME] = "";char sid[MAX_NAME] = "";DWORD nameSize = sizeof(userName);GetUserName((LPWSTR)userName, &nameSize);char userSID[MAX_NAME] = "";char us原创 2017-08-04 16:12:50 · 6339 阅读 · 1 评论 -
c++ 下的explicit关键字
explicit 关键字的作用是避免构造函数的参数自动转化为类对象的标识符;class A{public: explicit A(int) { }};int main(int argc, char *argv[]){ QApplication a(argc, argv); A b = 10; return a.exec();} error C24原创 2017-07-28 09:58:56 · 184 阅读 · 0 评论 -
NULL,nullptr的区别与联系
1)在c语言中NULL代表空指针。例如:int *i = NULL;#define NULL ((void*)0) 意思是NULL是void*指针,给int *i 赋值的时候隐式转换为相应类型的指针,但是如果换成c++编译器编译的时候会出错,以为c++是强类型的,void* 不能隐式转换为其他类型。一般的NULL定义的头文件为:/* Define NULL pointer valu原创 2017-09-15 11:29:25 · 3185 阅读 · 0 评论 -
c++ 获取当前时间,当前日期
1)获取当前时间string CurrentTimeString(){using namespace std::chrono;struct tm tstruct;char buf[80];auto tp = system_clock::now();auto now = system_clock::to_time_t(tp);in原创 2017-09-19 14:09:33 · 2489 阅读 · 0 评论 -
m_signalArgumentTypes.contains(object->metaobject())
webChannel = new QWebChannel(this);webChannel->registerObject(QStringLiteral("webChannel"), this);webengineContent->page()->setWebChannel(webChannel);关闭应用程序时弹出如下的窗口:解决方法:在closeEvent()中解除原创 2017-09-11 17:02:33 · 1149 阅读 · 2 评论 -
c++ 计算代码块运行时间
clock_t start, finish;double totaltime;start = clock();.....................................//测试代码,finish = clock();totaltime = (double)(finish - start) / 1000000;printf("\n此程序的运行时间为%lu秒",原创 2017-10-20 10:42:34 · 506 阅读 · 0 评论 -
C语言的位移运算
C语言提供了基于bit 的位移运算,写了个小程序测试一下位移运算的准确性#include "stdafx.h"int _tmain(int argc, _TCHAR* argv[]){int aa = 1234;printf("sizeof(int):%d\n", sizeof(aa));//sizeof(int):4printf("hex:%0x\n", aa);原创 2017-10-23 15:30:33 · 1249 阅读 · 0 评论 -
enum 与enum class
1) enum的功能需要一系列的#define来完成,enum 完成了一系列#define的打包收集,所以对于两个不一样的枚举体,即使枚举体的名字不同,里面的内容也不能重名。enum Direction{TOP_LEFT,TOP_RIGHT};enum Direction1{TOP_LEFT,TOP_RIGHT};error C2365: “TOP_原创 2017-07-20 17:54:27 · 3919 阅读 · 0 评论