
C/C++
宇宙379
C/C++,VC++
展开
-
cmake arm交叉编译
【代码】cmake arm交叉编译。原创 2024-05-23 20:11:17 · 249 阅读 · 0 评论 -
Linux 0 1 2 文件描述符
linux 0,1,2文件描述符原创 2023-02-22 15:30:17 · 209 阅读 · 0 评论 -
export getenv动态获取导出变量
export getenv原创 2023-01-03 15:44:15 · 346 阅读 · 0 评论 -
O_CLOEXEC的使用
父子进程文件描述符继承原创 2022-12-12 14:48:33 · 717 阅读 · 0 评论 -
bug vscode
记录一个bug,设置vscode保存自动格式化,他居然交换了头文件顺序(ascii排序),导致编译不过。将错误的这个头文件放前面即可。原创 2022-11-29 18:58:29 · 510 阅读 · 0 评论 -
makefile template
makefile原创 2022-11-11 18:58:41 · 201 阅读 · 0 评论 -
QT pro 递归模板
QT pro 模板原创 2022-11-07 14:40:01 · 266 阅读 · 0 评论 -
打印进程的所有线程
打印进程的所有线程原创 2022-11-02 13:57:13 · 128 阅读 · 0 评论 -
crash handler
core, coredump,crash handle原创 2022-11-02 09:56:47 · 469 阅读 · 0 评论 -
soft reboot
过度优化原创 2022-06-28 21:27:10 · 388 阅读 · 0 评论 -
全能终端神器 MobaXterm
MobaXterm真是个好东西!支持SSH,FTP,串口,VNC,X server等功能;软件小巧强大,还有绿色版。#include <iostream>#include <thread>#include <chrono>#include <atomic>class Timer { std::atomic<bool> active{false}; public: void setTimeo原创 2022-03-16 15:54:43 · 1032 阅读 · 1 评论 -
C 加减乘除的汇编
#include <iostream>using namespace std;//加减乘除void main(){ int a = 1; ++a; a++;//前置和后置: 基本类型,无区别;复合类型前置返回引用不复制,效率高 a += 2;//add eax,2 a--;//add eax,1 --a;//add eax,1 a -= 2;//sub eax,2 a *= 2;//shl原创 2021-12-09 10:57:48 · 466 阅读 · 0 评论 -
Qt 守护进程创建
#include "mainwindow.h"#include "ui_mainwindow.h"#include <QDebug>#include <QTimer>MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow){ ui->setupUi(this); m_process = new QProcess();原创 2021-05-21 15:16:22 · 882 阅读 · 1 评论 -
RTTI symbol not found for class ‘QObject‘ + double free or corruption
记录一个崩溃crash的问题。在方法中使用一个栈类对象时,程序出现崩溃。原因是:QT中 如果一个子级对象是new生成的(堆对象),当父级对象销毁时,会自动调用operator delete删除他的所有子级对象。这样有三种情况:如果一个子级对象是new生成的,他无需自己销毁;如果一个子级对象不是new生成的(栈对象),他在父级对象销毁前自己主动销毁自己,没问题。如果一个子级对象不是new生成的(栈对象),他不在父级对象销毁前自己主动销毁自己,父级对象调用operator delete他时就会出原创 2021-03-29 17:20:34 · 5160 阅读 · 0 评论 -
ffmpeg 命令行录屏和停止录屏
//开始录制void frmMain::on_start_clicked(){ m_Process.setProcessChannelMode(QProcess::MergedChannels); QString cmd = "ffmpeg.exe -f dshow -i video=\"screen-capture-recorder\" e:/123.mp4"; // .\ffmpeg -f dshow -i video="screen-capture-recorder"原创 2021-03-18 20:53:19 · 3701 阅读 · 0 评论 -
cout重定向到文件
#include <iostream>#include <fstream>#include <string>using namespace std;int main(){ ofstream out("out.txt"); ofstream err("err.txt"); ofstream log("log.txt"); cout.rdbuf(out.rdbuf());//重定向cout 到 out.txt cerr.r原创 2021-03-17 17:37:21 · 478 阅读 · 0 评论 -
C++获取CPU频率
#include <windows.h>#include <stdio.h>#include <intrin.h>#pragma intrinsic(__rdtsc)int main(){ unsigned __int64 t1,t2; t1 = __rdtsc(); //返回处理器时间戳(自上次CPU重置以来的时钟周期数-64位无符号整数) Sleep(1000); t2 = __rdtsc(); printf_s("CPU Freq:%lldM原创 2020-12-18 11:05:56 · 3057 阅读 · 0 评论 -
调试USB时,鼠标乱跳
调试VC USB上位机时,鼠标屏幕乱跳,最后导致死机了。 公司高手说是操作系统读取USB信息时出错,把USB芯片发来的数据当成了鼠标,键盘发来的消息。 第一次遇到这个问题,特此记录下。原创 2011-08-31 17:43:27 · 1348 阅读 · 3 评论 -
cannot open *.exe for writing
用VC6.0编程时,出现cannot open *.exe for writing错误,花了很多时间终于发现程序没有关闭。 在任务管理器中关掉相应的线程即可。 不过我想不通为什么窗体关闭了,程序没有关闭?那位大侠知道请告知。原创 2011-08-16 11:16:43 · 2349 阅读 · 1 评论 -
VC USB通信问题
行为:当下位机用USB线缆连接PC端的上位机时,开始的设置是立即发送数据给上位机。在这种情况下PC系统右下角出现“Microsoft ...Mouse”,操作系统把USB芯片当成了鼠标。 原因:大概是USB刚连上PC时,他们需要配置并交流信息,PC需要知道是什么原创 2011-09-20 10:36:12 · 1713 阅读 · 0 评论 -
程序不报错退出
调试一个vc程序时,当接收了几次数据后发现程序突然退出,并不报错。 愕然之余,苦苦调试半天,终于弄明白了。 我每次都将接收的数据保存到了文本框中。当累加到大约10000个字符后,程序退出了。 文本框中的字符数好像不能超过某一限制。原创 2011-10-18 21:29:55 · 1421 阅读 · 0 评论 -
C 温故
最近拿了本C语言温故了下,颇有一些不熟悉的地方,于是笔记下来:1。常量定义一般大写:#define PRICE 30 ,可用#undef终止宏定义作用域。2。变量名是一个符号地址,通过它找到变量对应的内存地址,进而通过内存地址读取变量的数据。3。变量编译时就分配了内存空间。4。注意溢出问题:int i=32767;i+1 = -32768。5。字符以Ascii码存储;字符串"原创 2011-11-11 17:09:15 · 781 阅读 · 0 评论 -
VC学后感
以前由于对指针一知半懂,对C++畏如狼虎。用C#做了个小项目,老大认为效率不大好。无奈只好用VC改写,学了一周,发现VC还是不难的。 框架都帮你搭好了,只要添加控件及事件即可。复杂的C++知识,如多态,运算符重载,虚函数,模板等很少用到。至于所谓的消息循环,映射,也不难懂。 把学习的一些东西记录下(我用的VC6.0): 1.VC新建的工程一般是MFC Appwizar原创 2011-08-31 19:27:37 · 787 阅读 · 0 评论 -
C++内存分配
在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。 堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统转载 2012-05-28 14:05:59 · 514 阅读 · 0 评论 -
float point support not loaded
这几天用VC2010编写了一个小程序,拷贝到另外一台计算机时候出现 float point support not loaded 的错误,搜索了下好像是float类型的数据未初始化,导致运行时未链接浮点库。float data[8];sscanf(str,"%02X",data[i]); 将float data[8]; 改为float data[8] = {0};即可。或增加一个f原创 2012-07-09 22:03:09 · 8118 阅读 · 0 评论 -
程序员技术练级攻略
原文地址:http://coolshell.cn/articles/4990.html 月光博客6月12日发表了《写给新手程序员的一封信》,翻译自《An open letter to those who want to start programming》,我的朋友(他在本站的id是Mailper)告诉我,他希望在酷壳上看到一篇更具操作性的文章。因为他也是喜欢编程和技术的家伙,于是,我转载 2012-08-03 22:03:00 · 602 阅读 · 0 评论 -
浅谈内存读写
我们可以直接编程进行内存的读写,如: 1>.内存写 int *pi = (int *)0x00000000;//将内存地址0强制转换为一个int指针。 *pi = 123;.//将地址0处内存值设为123. 或者直接这样: *(int *)0x00000000 = 123; 2>.内存读 int i =*(int *)0x000原创 2012-07-31 10:13:39 · 1441 阅读 · 0 评论 -
犯了个极其郁闷的小错误
昨天调试程序时,发现用fscanf在文件里读取数据不正确。花了一个小时,换文件名,改变量名。。。结果还没有解决。 只好求助于同事。结果人家一眼看出我读取float变量用了%d而不是f%,这样的错误让我郁闷不已。 写下来,提醒自己下次一定要细心细心再细心!!!原创 2012-05-18 16:35:46 · 476 阅读 · 0 评论 -
VC如何更改单文档应用程序的标题
1·文档标题的改变 文档标题在是由工程中相应的文档类所控制的,我们可做如下实验。运行AppWizard生成的程序SDITitle,选择选单中的“文件”“打开”选项,打开“SDITitile.h”文件,则标题栏变成“SDITitle.h - SDITitle”。这一切动作都是MFC类自动进行的。了解这一点,我们可在相应的文档类中,利用SetTitle函数来改变文档标转载 2012-11-28 14:35:34 · 5997 阅读 · 0 评论 -
VC程序Debug版本和Release版本运行不一致问题
最近写了个VC小软件,调试发现debug和release下运行结果不一致。 查了半天发现好像是new的堆内存未释放导致的问题(不确定,但是delete []buf;后不一致问题解决了)。 第一次发现这个问题,特意记录下。 网上搜索的其他可能导致不一致的情况: 1. 对变量的初始化不一致或未初始化。例如,char字符串匹配,在Debug正常,而Release原创 2012-09-24 16:07:24 · 2496 阅读 · 0 评论 -
VC6操作Excel2003
1. 新建Appwizard(exe),基于对话框;2. 打开MFC ClassWizard窗口(查看—>建立类向导),选择Automation,单击Add Class按钮,选择From a type library...,弹出文件选择对话框,之后定位到Microsoft Office的安装目录(通常为C:\Program Files\Microsoft Office\Office),选择EX原创 2012-11-22 11:07:12 · 2495 阅读 · 2 评论 -
VC2010中tab control 使用
1.新建一个MFC工程, 取名MyTab, 选择Dialogbased, 然后Finish. 2. 删除对话框上默认添加的三个控件. 添加Tab Control控件并在Property属性中设置ID为IDC_TABTEST 在More Styles里勾上Bottom. 调速尺寸使其布满整个对话框, 我这边Tab Control的尺寸最后为164X203. 在ClassWizard为其转载 2012-07-30 15:30:23 · 4135 阅读 · 2 评论 -
VC问题
状况: 程序与硬件调试时退出而不报错。 原因: 串口接收的数据太多,一个包8000多字节。不能一次性频繁点击发送。应该等待数据接收完毕后再点击。 解决方法:点击一次后,将按钮设为unable(GetDlgItem(IDC_btnSEND)->EnableWindow(false); ),数据接收完毕后再设为able。(GetDlgItem(IDC_btnSEND)->Enab原创 2011-10-24 18:57:49 · 530 阅读 · 0 评论 -
静态库和动态库的区别
lib和dll文件的区别和联系 .dll是在你的程序运行的时候才连接的文件,因此它是一种比较小的可执行文件格式,.dll还有其他的文件格式如.ocx等,所有的.dll文件都是可执行的。 .lib是在你的程序编译连接的时候就连接的文件,因此你必须告知编译器连接的lib文件在那里。一般来说,与动态连接文件相对比,lib文件也被称为是静态连接库。当你把转载 2012-11-28 14:53:49 · 620 阅读 · 0 评论 -
VC6工程打不开
用VC做了一个项目,原项目原位置可以打开,一旦复制到另外一个地方或给项目改个名字就打不开了。在网上找了半天,尝试了很对方法,终于发现一个可行,记录下: 解决方法:删掉*.dsw,*.aps,*.ncb, *.opt, *.plg等文件打开打开*.dsp !原创 2012-02-19 10:45:38 · 1827 阅读 · 0 评论 -
VC 开机自动启动程序代码
最好的还是快捷键+启动文件夹的方式,这样尽量不更改太多系统注册表。 很多监控软件要求软件能够在系统重新启动后不用用户去点击图标启动项目,而是直接能够启动运行,方法是写注册表Software\\Microsoft\\Windows\\CurrentVersion\\Run。参考程序可以见下:(查找程序目录的执行文件,存在则进行添加注册表操作) //实用代码一int C***D转载 2012-05-21 16:31:26 · 708 阅读 · 0 评论 -
浅论mutable关键字
Mutable单词的含义是:可变的,Mutable关键字的作用是说明类的成员变量是可变的,即使在const成员方法中也可以变化而不引起编译错误。mutable也是为了突破const的限制而设置的。被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中。 我们知道,如果类的成员函数不会改变对象的状态,那么这个成员函数一般会声明成const的。但是,有些时候,我们需要在原创 2012-11-30 19:33:47 · 570 阅读 · 0 评论 -
浅论析构函数,拷贝构造函数和赋值运算符
1:定义构造函数:用于初始化成员变量,构造类变量。析构函数:用于释放类成员占用的内存资源。拷贝构造函数:构造函数的一种,用于从一个已有的对象拷贝为另外一个对象(复制)。赋值运算符(=):用于两个对象(成员变量)之间的赋值(值的复制)。2:例程:如下:class Person{public:Person(){_id = 1;_name="hundun";原创 2012-11-30 19:35:06 · 700 阅读 · 0 评论 -
浅论explicit关键字
Explicit单词的含义是:外在的, 清楚的, 直率的,显式的,Explicit关键字的目的是防止隐式的构造,只能进行显式的的构造。举例说明:#include iostream>using namespace std;class A{public:Explicit A(int i){//构造函数1}A(string str,int i=10){//构造函数2}原创 2012-11-30 19:34:32 · 443 阅读 · 0 评论 -
C++函数对象与函数指针不同之处
在C++编程语言中,有很多功能都与C语言相通,比如指针的应用等等。在这里我们介绍的则是一种类似于函数指针的C++函数对象的相关介绍。C++函数对象不是函数指针。但是,在程序代码中,它的调用方式与函数指针一样,后面加个括号就可以了。这是入门级的随笔,说的是函数对象的定义,使用,以及与函数指针,成员函数指针的关系。C++函数对象实质上是一个实现了operator()--括号操作符--的类。例如:转载 2012-11-22 15:56:17 · 488 阅读 · 0 评论