
c语言
Flaribbit
这个作者很懒,什么都没留下…
展开
-
相见恨晚 conan 开箱即用的c++包管理工具
之前用过 vcpkg,群友提起 conan,就去试了一下。结果用出了 cargo 的感觉,于是写一篇文章记录一下。安装安装很简单,conan 是 python 写的,现在大家基本都有 python 环境,直接 pip 安装pip install conan项目创建给出一个 uws 项目main.cpp#include "App.h"int main() { uWS::App() .get("/*", [](auto *res, auto *req) {原创 2022-01-27 10:44:20 · 4412 阅读 · 1 评论 -
一点点解决链接错误的经验
链接时报错如下[build] ***.obj ***: undefined reference to `WspiapiGetNameInfo'[build] ***.obj ***: undefined reference to `gai_strerrorA'[build] ***.obj ***: undefined reference to `WspiapiFreeAddrInfo'[build] ***.obj ***: undefined reference to `WspiapiGetAd原创 2021-10-26 00:03:44 · 823 阅读 · 0 评论 -
c/c++连接mysql数据库 cmake快速配置
mysql下载地址新建一个简单的main.cpp文件#include <cstdio>#include "mysql.h"int main() { MYSQL mysqlConnect; mysql_init(&mysqlConnect); if (!mysql_real_connect(&mysqlConnect, "127.0.0.1", "user", "password", NULL, MYSQL_PORT, NULL, 0)) {原创 2021-10-10 23:25:38 · 3543 阅读 · 0 评论 -
c++ utf8 string iterator
#include <windows.h>#include <iostream>#include <string>using namespace std;class stringIter { private: string &str; public: class iterator { private: string &str; string::iterator iter原创 2021-06-06 15:16:47 · 245 阅读 · 0 评论 -
记录一次lua(luajit)比cpp(STL)快
local int = math.floorlocal solu89 = {[89]=true}local solu1 = {[1]=true}local function sqrsum(i) local s = 0 while i>0 do s = s + (i%10)^2 i = int(i/10) end return sendlocal function sol(i) local temp = {i}原创 2021-05-08 16:02:36 · 438 阅读 · 0 评论 -
C语言实现协程
看到了一个有意思的东西,原文来自Matthew Lee翻译的文章,英文原文Simon Tatham 的文章 Coroutines in C,里面的程序对我来说理解起来有点难度,于是自己写了个更简单的。基本思想就是用 state 变量来保存函数调用的状态,这里借助 ANSI C 提供了一个名为 __LINE__ 的特殊的宏,代表了当前代码所在的行数。#define coBegin \ static int __state = 0; \ switch (__state原创 2020-12-27 11:07:05 · 796 阅读 · 2 评论 -
地形瓦片地图TiledMap AutoTiles自动图块
最早是在RPG Maker里面见到这种东西,相邻的块可以自动连接,大大方便地图绘制。素材长这个样子一个大块是32x32的,然后每个大块又被分成4个16x16的小块,而这些小块总共可以组成47种大块(最后两个是一样的)。(这两张图片来自这里,懒得去搞图了)于是,给图1中的小块按行编号0~47,可以写出图2中每个大块的组成。unsigned char AutoTileTab[48][4]={ 18,17,14,13,//0 2,17,14,13,//1 18,3,14,13,原创 2020-12-26 15:15:16 · 1516 阅读 · 0 评论 -
Mathematica 使用C语言编写库函数教程 带示例
在,Mathematica 还来百度?帮助文档写的很详细了,这里只说一下重点用 MArgument_getXXXX 获得函数参数用 MArgument_setXXXX 设置返回值编译链接 WolframRTL.dll比如f2.c#include <math.h>#include "WolframImageLibrary.h"#include "WolframLibrary.h"DLLEXPORT int WolframLibrary_getVersion() {原创 2020-12-26 11:32:32 · 981 阅读 · 0 评论 -
利用 Github Actions 编译C++库
群友推荐了一个好用的网络库 drogon ,Visual Studio环境下安装非常简单,只需原创 2020-12-08 21:04:39 · 1129 阅读 · 0 评论 -
windows系统使用gcc/g++编译dlib
环境准备dlibtdmgcccmake编译设置源码路径为dlib解压后的路径,复制路径贴到下面,结尾加上/build点击configure,编译器选择Mingw Makefiles,选择使用默认编译器,然后Finish如果有CUDA环境就填到CUDA_SDK_ROOT,没有就保持默认设置即可,点击Configure在build目录打开cmd,输入mingw32-make -j8(8线程编译)回车编译完成,得到libdlib.a测试去examples目录,随便找个程序,例如g++原创 2020-10-18 15:19:46 · 473 阅读 · 0 评论 -
关于love2d引擎require导入C/C++编写的.dll/.so扩展库问题
游戏项目中遇到的狗屎问题,分享一下解决经验,以一个最基本的程序为例:test.c#include "lua.h"#include "lualib.h"#include "lauxlib.h"static int about(lua_State *L){ lua_pushstring(L,"test by flaribbit"); return 1;}static const struct luaL_Reg funcList[]={ {"about", about}原创 2020-05-18 10:25:48 · 717 阅读 · 0 评论 -
最快速计算二进制数中1的个数
嘛,现代CPU都是直接有指令可以计算的,应该是最快的了吧#include <stdio.h>int main(){ int a=13; register int ax __asm__("%eax"); __asm__("POPCNT EAX,%0"::"r"(a)); printf("%d\n",ax);}...原创 2020-01-05 12:07:11 · 295 阅读 · 0 评论 -
用lua换壁纸 lua调用dll初尝试
直接给代码好了#include <lua.h>#include <lualib.h>#include <lauxlib.h>#include <windows.h>static int ChangeWallpaper(lua_State *L){ const char *path=lua_tostring(L,1); Sy...原创 2019-12-03 13:02:49 · 335 阅读 · 0 评论 -
记一次C语言编写的爬虫 wininet 堆糖爬虫
对 没错 嗯 用C语言写的爬虫首先,既然是爬虫,当然要能够访问网页,用C访问网页的方法也有很多,这里选择的是一种相对比较方便的wininet,用InternetOpenUrl打开url然后读取数据就可以了于是定义了一个获取网页源码的函数,ASSERT是个人习惯问题,见最后的完整代码int GetUrl(char *url, char *buf, int *length){ long ...原创 2019-10-28 23:12:30 · 1291 阅读 · 0 评论 -
iup界面库的复古界面问题 改成适应windows风格 windows10风格
新建.rc资源文件,可以使用ResEdit工具,添加manifest.xml清单文件,内容如下<?xml version="1.0" encoding="UTF-8" standalone="yes"?><assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <depe...原创 2019-10-23 10:02:27 · 855 阅读 · 0 评论 -
c语言 卡尔曼滤波
#include <stdlib.h>#include <stdio.h>#include <math.h>typedef struct{ double prevData; double p,q,r,kGain;}Kalman;void KalmanInit(Kalman *k){ k->kGain=0; k->p=5; //p...原创 2018-05-30 18:46:20 · 1930 阅读 · 0 评论 -
win32 GUI 笔记 更改控件字体
void ChangeFont(HWND hwndDlg){ int i; HFONT hfont=CreateFont(12,0,0,0,0,0,0,0, GB2312_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,DEFAULT_PITCH,"宋体"); for(i=40000;i<4...原创 2018-06-16 23:25:23 · 1655 阅读 · 0 评论 -
关于SHParseDisplayName 爆炸的问题
不知道是mingw自带的api搞错了还是什么他是这样写的HRESULT WINAPI SHParseDisplayName(LPCWSTR,IBindCtx*,LPITEMIDLIST,SFGAOF,SFGAOF*);第三个参数是LPITEMIDLIST,但是这样写会爆炸微软的是这样写的SHSTDAPI SHParseDisplayName( PCWSTR pszName, I...原创 2018-08-14 11:02:36 · 431 阅读 · 0 评论 -
ffmpeg 视频无损拼接 和一键拼接方法
首先,把要合并的视频按顺序写到files.txt里,例如file '1.mp4'file '2.mp4'注意必须单引号然后ffmpeg -f concat -safe 0 -i files.txt -c copy output.mp4即可注意:这一行指令使用了-c copy,说明他只适用于视频切割产生的分段,被合并的视频必须是相同的参数!!如果你需要合并参数不同的视频...原创 2018-10-08 13:03:46 · 15901 阅读 · 3 评论 -
【学习笔记】VSCode+mingw+SDL2环境配置
目录1. SDL获取1.1 SDL下载1.2 下载之后2. VSCode配置3. 创建项目和相关配置3.1 创建项目3.2 简单的makefile编写1. SDL获取1.1 SDL下载直接去官网下载根据使用的编译器选择对应的版本,我用的是mingw,所以选择SDL2-devel-2.0.9-mingw.tar.gz1.2 下载之后下载之后解压到一个容易找到的文件夹即可,不建议和原编...原创 2019-06-08 13:59:55 · 5162 阅读 · 0 评论 -
C语言 函数指针和返回函数的函数 简单举例
如标题,这里就不过多解释了,详见别人的博客,这里给出两个简单的例子#include <math.h>#include <stdio.h>double (*f)(double)=sin;double (*g())(double){return sin;}int main(){ int i; printf("%f, %f\n",f(0.5),g()...原创 2019-06-14 18:10:39 · 813 阅读 · 0 评论 -
【笔记】配置MSYS2+Git+Vim+MinGW64+C开发环境+VSCode开发环境 优雅的搭建开发环境
目录为什么这样做MSYS2下载VSCode下载环境变量设置C开发环境搭建(gcc+make)软件前缀的区别修复MSYS2中的Git的路径问题在VSCode配置Git测试各项工具是否正常运作为什么这样做——不是有现成的Git for windows吗——因为git for windows带了gnu全家桶 还是win32的 再加上MinGW 两套全家桶了 还带一个很不舒服的terminal 还会...原创 2019-09-03 13:29:46 · 3246 阅读 · 0 评论 -
C++ cpr网络库编译 MinGW-w64 gcc windows
这玩意编译了我一天 坑很多 多的废话就不说了直接上正文我的编译环境git(或许不需要)MinGW-w64(gcc 8.1.0 x64)准备cpr库本体:在github下载openssl头文件:MinGW-w64自带gcc和g++:MinGW-w64自带cmake:在这里下载mongoose:在github下载curl:在github下载然后把mongoose和curl...原创 2019-09-12 16:07:25 · 1755 阅读 · 0 评论 -
C语言 最大公因数算法 汇编复习 辗转相除法
在某个地方看到了这样一个神奇的算法int gcd(int a, int b) { while(b)b^=a^=b^=a%=b; return a;}愣了一下,看了三遍发现只是辗转相除法然后脑洞大开 这个程序用汇编写一下会怎样,于是就有了下面的程序int gcd(int a,int b){ __asm__( "MOV EAX,ECX\n" ...原创 2019-09-23 20:42:00 · 303 阅读 · 0 评论 -
C语言优先级顺序表口诀
一是括号结构体,二是单目运算符,三乘除余四加减;五左右移六大小,七是等于不等于,与异或或位在前;三目赋值与逗号。原创 2018-03-24 16:32:22 · 1578 阅读 · 0 评论