C总结
C总结
仗剑天涯hc
这个作者很懒,什么都没留下…
展开
-
c++之WinApi(一)--Process
#include <windows.h> #include <stdio.h> #include <tchar.h> void RunExe() { STARTUPINFO stStartUpInfo; ::memset(&stStartUpInfo, 0, sizeof(stStartUpInfo)); stStartUpInfo.cb = sizeof(stStartUpInfo); PROCESS_INFORMATION stProcessInf.原创 2021-09-29 09:30:23 · 465 阅读 · 0 评论 -
c++之WinApi(二)--Logon
#include <windows.h> #include <iostream> #ifdef _WIN32 #include <codecvt> #include <string> static std::wstring string2wstring(std::string srcStr) { std::wstring_convert<std::codecvt_utf8<wchar_t>> cvs6; return cvs6.f原创 2021-09-29 09:30:10 · 109 阅读 · 0 评论 -
c++之WinApi(三)--MadeCarsh
#include <Windows.h> #include <iostream> #include "hsysrealinfo.h" //madecrase int mainmadecrase() { #if 1 int pid = 7728; #else std::string name = "electrical"; int pid = getPidByName(name); #endif // 0 HANDLE process_handle = OpenProce.原创 2021-09-29 09:29:39 · 81 阅读 · 0 评论 -
c++之WinApi(四)--MemLeak
#include <iostream> #include <memory> #define USE_CRTDB 0 #if USE_CRTDB #define _CRTDBG_MAP_ALLOC #include <stdlib.h> #include <crtdbg.h> #define new new(_NORMAL_BLOCK, __FILE__, __LINE__) void EnableMemLeakCheck() { int tmpFl.原创 2021-09-29 09:29:26 · 117 阅读 · 0 评论 -
c++之代码片段(一)
Bmp赋值 for (int i = 0; i < height; i++) { for (int j = 0; j < width; j++) { float Light = Imagedata[j][i]; if (step == 1) { outImagedata[i*width + j] = Light; } else if (step == 3) {原创 2021-09-29 09:30:54 · 143 阅读 · 0 评论 -
c++之常犯错误(一)
QString转char*不能只用.data() 实在不行可转成string.c_str() 本来是该链接qt4链接成了qt5 ldd SIR //查看链接库 cmake编译没有指定路径 odbc的配置文件可能在root家目录下 qt中文编码格式错误: 现象:程序编译通过,用的也没问题,但无缘无故会在程序实际数据时报错。 原因: 我的程中有中文注释,我是是在linux下用qtcreator写的代码,移到windows之后,编码格式有问题。 解决办法: 去掉所有的中文注释,或者改变文件的编码格式,使之适应vs原创 2021-09-29 09:31:16 · 81 阅读 · 0 评论 -
c++之常犯错误(二)
注意printf少参数会崩溃 modbus是独占模式 结构体注意字节对齐 数组注意防止越界 使用short要注意范围溢出 找不到错误时可以试试删除中文注释 //(*imageData)[i*width * 3 + j * 3 + 2] 二级指针注意优先级 c++线程只能传指针或者值,不能传引用,参数传string不要传char* 文件编码,linux本地为utf-8,window下为ANSI //unsigned char **oi = new unsigned char *[Row]原创 2021-10-14 11:35:12 · 92 阅读 · 0 评论 -
c++之常犯错误(三)
QString转char*不能只用.data() 实在不行可转成string.c_str() 本来是该链接qt4链接成了qt5 ldd SIR //查看链接库 cmake编译没有指定路径 odbc的配置文件可能在root家目录下 qt中文编码格式错误: 现象:程序编译通过,用的也没问题,但无缘无故会在程序实际数据时报错。 原因: 我的程中有中文注释,我是是在linux下用qtcreator写的代码,移到windows之后,编码格式有问题。 解决办法: 去掉所有的中文注释,或者改变文件的编码格式,使之适应vs原创 2021-09-24 16:43:26 · 73 阅读 · 0 评论 -
c++之自我总结(一)
lambda [] 不捕获任何变量 [&] 以引用方式捕获所有变量 [=] 用值的方式捕获所有变量(可能被编译器优化为const &) [=, &foo] 以引用捕获foo, 但其余变量都靠值捕获 [&, foo] 以值捕获foo, 但其余变量都靠引用捕获 [bar] 以值方式捕获bar; 不捕获其它变量 [this] 捕获所在类的this指针 类 类也是一种特殊的数据类型,类似结构体 cin 是istream的实例化,自带锁 cout是ostream的实例化,自带锁 静态变原创 2021-09-29 09:31:30 · 106 阅读 · 0 评论 -
c++之自我总结(二)
1.关于数据库 局域网情况下或者单机情况下使用mysql就可以。 mysql的api封装以qt的(Qvarint)最好用 c++可以用mysqlcppconn库(java 最次最通用的就是纯c风格api(使用较为麻烦) 国产数据库(人大金仓)或者Oracle使用风格类似mysql 前期可以用mysql模拟,后期可以无缝切换 如果数据量较小且需要本地存储则sqlite数据库最为合适 qt的api最好用,没有qt可以使用纯c风格api 普通缓存就用内存stl变量即可, 如果要求实时性可以使用redis作缓存 r原创 2021-09-29 09:31:06 · 75 阅读 · 0 评论 -
c++之自我总结(三)
移位操作 int num = 12345678999; printf("num:0x%x\n", num); int num1 = (num >> (8 * 0)) & 0x000000ff ; printf("num1:0x%x\n", num1); int num2 = (num >> (8 * 1)) & 0x000000ff; printf("num2:0x%x\n", num2); int num3 = (num >> (8 * 2原创 2021-09-29 09:31:42 · 50 阅读 · 0 评论 -
c++之数字句柄
最近琢磨了一下接口设计,感觉接口设置时为了更好的扩展,又不想直接使用指针(对非c/c++,给非c++人员调用太过麻烦)同时也要具备多线程或者多实例的功能,故参考windows系统就设计就引入了我自己的句柄概念,以下仅供参考。 测试代码 #include <map> #define ULLONG unsigned long long class MyClass { public: MyClass() { a = 0; } int square() { re原创 2021-09-24 16:42:50 · 90 阅读 · 0 评论 -
c++之调用python
以下是小可关于c调python的理解有不对之处希望大家指正 测试环境准备 vs2015 x64 release 加载python头文件目录 C:\ProgramData\Anaconda3\pkgs\python-3.7.0-hea74fb7_0\include 加载python库目录 C:\ProgramData\Anaconda3\pkgs\python-3.7.0-hea74fb7_0\libs 链接库 python37.lib 动态库 python37.dll 一 print简单函数测试 测试代原创 2021-09-24 16:44:01 · 88 阅读 · 0 评论 -
c++之dll动态调用
以下是小可关于c++动态调用的理解有不对之处希望大家指正 配合测试动态库代码 #ifndef DLLDEMO_H #define DLLDEMO_H #if defined(WIN32) || defined(_WIN32) #ifdef MYDLLEXPORT #define API_DLLEXPORT extern "C" __declspec(dllexport) #else #define API_DLLEXPORT extern "C" __declspec(dllimport原创 2021-09-24 16:42:10 · 1281 阅读 · 0 评论 -
c++之linux下udp
client #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/socket.h> #include <sys/types.h> #include <unistd.h> #include <arpa/inet.h> int main(int argc, const char *argv[]) { int sockfd; ch原创 2021-09-29 09:30:40 · 933 阅读 · 1 评论 -
c++之linux下dump
以下是小可关于coredump的理解有不对之处希望大家指正 简单的崩溃可以 通过日志和堆栈信息定位 复杂的则需要借助 coredump 文件定位 coredump调试步骤如下 写入测试程序 vim test.c #include <stdio.h> #include <string.h> int main() { int *ptr = NULL; *ptr = 10; return 0; } 编译并执行 在程序启动时打开coredump,并设置co原创 2021-09-24 16:40:08 · 888 阅读 · 0 评论