
跨平台
witton
这个作者很懒,什么都没留下…
展开
-
使用Glib中测试框架对C代码进行单元测试
在Windows上做开发可能很少甚至没有听过GLib库,但是在Linux下,它却是一个非常重要的库,Linux下的著名桌面GUI GNOME的基石就是它,GNOME是使用GTK开发的,而GTK的底层库就是GLib。,按官网的介绍:GLib是一个通用的,跨平台的实用库,它提供了许多有用的数据结构,宏,类型转换,字符串实用库,文件实用库,一个抽象的主循环等等。它是使用的LGPL许可发布的,可以在Unix、Linux、Windows、MacOS平台上运行。原创 2023-04-21 18:26:27 · 719 阅读 · 0 评论 -
C语言随机数
昨天项目中遇到随机数相关的问题,其实并不是问题,只是没有使用对。项目中使用的自己写的类似C语言的rand()的伪随机函数,但是种子设置有点问题,所以出现了两次战斗有绝大部分相同结果的问题。C语言的rand()函数在使用前需要使用srand()函数来设置随机种子,这样才不会出现相同的随机序列。rand()函数的取值范围为[0,RAND_MAX],Windows下的RAND_MAX为32767。实际应用中,我们可能需要生成范围大于RAND_MAX的随机数,直接使用rand()函数就无能为力了。其实把rand原创 2020-10-21 11:58:01 · 452 阅读 · 0 评论 -
MSYS Makefiles、 MinGW Makefiles与Unix Makefiles的差别
我们在*nix或者Mac系统中做开发会经常使用Makefile来组织构建规则,然后使用make来构建项目。Makefile可以手动编写,也可以使用工具生成。生成Makefile的工具还是比较多的,目前比较常用的跨平台的Makefile生成工具要算CMake了。CMake非常强大,可以生成很多类型的Makefile或者工程文件,可以通过下面的指令来查看具体的可生成的文件。cmake --help随着Mingw、MSYS2、cygwin这些Linux移植系统在Windows上的出现,Windows上也原创 2020-08-28 15:44:51 · 2987 阅读 · 0 评论 -
Shell中显示Git分支名
如果我们安装了git for windows,在使用git bash的时候,如果当前目录是Git管理的目录,则会在后面显示Git的当前分支名:如果我们安装了msys2,则可以不用再安装git for windows,因为Git for windows也是使用的msys2中的mingw64,而且占用的空间还不小。msys2中安装git直接使用下面的命令即可。pacman -S git但是这样安装后不能像Git for windows一样在bash中显示git管理目录的当前分支。为了达到可以显示原创 2020-08-22 15:22:00 · 1012 阅读 · 0 评论 -
使用Clang编译内联intel语法汇编的C/C++项目
我们在编写C/C++代码时,如果在有较高性能需求的时候,可以使用汇编代码来编写相应的函数,C/C++直接调用即可。汇编的语法格式有两种,一种是我们在Windows下常见的Intel的语法格式;另一种是GCC下使用的AT&T格式的语法,这种语法对我们经常使用Windows或者从Windows开始学习编程的开发人员来说会感觉很晦涩。C/C++提供了外联与内联两种方式来与汇编代码进行交互,不过内...原创 2019-12-09 11:11:37 · 5004 阅读 · 1 评论 -
Windows下开发Linux C/C++项目
一、Windows与Linux下皆可以编辑、编译、调试、运行这是常规方法,以前我做的几个项目都是在Windows下使用Visual Studio进行编辑、编译、调试、运行,Windows下测试没什么问题了,然后在Linux下再编译、部署、运行。这样做有许多好处,借助Visual Studio的强大功能,编写、编译、调试代码都会非常舒服,不需要使用命令行去操作这一切。但是也有一些问题:1.由于...原创 2019-06-04 17:50:12 · 9174 阅读 · 0 评论 -
C/C++通用Makefile
最近的项目又回到了Linux上运行,这就需要在Linux下编译项目,写Makefile针对习惯了Windows的程序员来说是一件痛苦的事,如果有一个通用的Makefile该多好啊,本着这样的目的,我再次研究了一下Makefile,写出了一个实用的通用Makefile,该Makefile在Windows以及Linux平台下作了一些简单测试,未发现问题,如果大家在使用过程中发现有问题可...原创 2017-02-23 14:14:40 · 2120 阅读 · 5 评论 -
C++安全方便高效地复制对象数组
在C++中,我们经常遇到需要对一个对象数组进行复制,比如下面一个结构:struct STest{ int a; int b; vector vctInt;};我们定义了两个数组:STest A[20];STest B[20];需要将数组A中的所有内容复制到B数组中,通常我们的做法都是这样:for(size_t i = 0; i < AR原创 2013-05-05 21:39:30 · 9541 阅读 · 0 评论 -
跨平台函数指针的写法
(若转载,请注明原出处与作者,作者:Witton)前段时间,我在项目中用到了函数指针, 其写法示例如下://Myclass.hclass CMyClass;typedef void (CMyClass:: *MyCALLBACK)();class CMyClass{ MyCALLBACK m_MyHandler[5];protected: v原创 2007-05-11 13:05:00 · 1143 阅读 · 0 评论 -
跨平台宏的写法
(若转载,请注明原出处与作者,作者:Witton) 前段时间在写代码的时候,有一段代码发现用宏比较方便,于是就用宏完成了这段代码,写完之后,看到这段代码是相当的整齐,有一种赏心悦目的感觉。现将之贴出来与大家分享: #define FUNCTION(T,N)\ int GetBase##N##Array()\ {\ return (int)&gCharBaseDat原创 2007-04-30 17:50:00 · 1913 阅读 · 0 评论 -
跨平台模板的写法
(若转载,请注明原出处与作者,作者:Witton) 由于工作的原因,自己写的代码,需要跨平台运行(windows与Linux),但是由于VC编译器与gcc/g++编译器的差别,有的代码,在VC下面编译OK,在Linux下却未必编译得过,下面就是一个典型的例子:请先看一下下面的一段代码是否有问题:#include using namespace std;template原创 2007-04-30 17:10:00 · 1314 阅读 · 0 评论 -
C++类模板的成员函数模板写法
这几天本来想将Lua_Tinker移植到Linux上去的,但是由于VC中的模板写法与gcc中的模板写法有些不同之处,比如下面一段代码: struct pop_{ template static T invoke(lua_State *L, int index) { return lua2type::invoke(L, index); } template<>原创 2007-05-21 13:04:00 · 5616 阅读 · 0 评论 -
关于友元函数的跨平台问题
今天我在项目中写了一段代码,这段代码中有两个类A和B,类A中的一个保护成员函数需要访问类B中的私有成员变量,为了简便起见,我将类A中的这个保护成员函数设置成类B的友元函数,在VC下编译通过,没有任何问题。但是在LINUX下编译却出现了错误,说该函数是保护的。在LINUX下我的GCC/G++版本是4.4.1,根据错误提示,我将类A中的那个保护成员函数改为public就OK了。我记得在GC原创 2010-02-03 13:51:00 · 645 阅读 · 0 评论 -
跨平台UNICODE编程总结
这段时间在架构整个服务器,虽然前段时间受到了5.12汶川8.0级大地震的影响(深切悼念在此次大地震中遇难的同胞们),但是,我的工作还是在不断地向前推进着。为了让我们的服务器能够跨平台(主要是WINDOWS与LINUX),且能支持世界上的各种语言,我写了一个跨平台的且支持UNICODE的库。其实,我在之前也有写过跨平台方面的代码,积累了不少的经验,但在写这个库的过程,还是遇到过许多问题,我觉得其原创 2008-06-16 13:25:00 · 1684 阅读 · 4 评论 -
跨平台Unicode编程的一点问题
最近在做一个跨平台的库,想让这个库支持ANSI和UNICODE,但是在LINUX下不像WINDOWS下有那么多UNICODE的函数可供使用,比如fopen在LINUX下并没有像WINDOWS中一样有一个_wfopen,这就需要作另外的处理,这个不是今天想说的问题。 我今天想说的问题是在LINUX下与WINDOWS下都有一个支持UNICODE的函数:wprintf。这个原创 2008-04-24 17:12:00 · 1051 阅读 · 0 评论 -
LuaTinker向Linux移植成功
今天我怀着无比激动的心情写这篇博客。LuaTinker以其短小精悍,功能比较强大而广泛地被许多网友及同事所关注。自从我用了LuaTinker后,我就想把它移植到Linux上去,将之写成跨平台的代码。看过LuaTinker的人都知道,LuaTinker短小精悍之处就在于模板的使用,但是其使用的却是VC中所特有的模板写法,许多写法都不能在Linux下编译通过,也就不能在Linux下使用原创 2007-06-06 17:14:00 · 2895 阅读 · 3 评论 -
如何利用VC编写有汇编代码的跨平台代码
在C/C++中添加内联汇编很容易,只需要用__asm(VC中)或者__asm__(gcc/g++中)关键字就可以在C/C++中添加内联汇编了。但是VC中的内联汇编与gcc/g++中的内联汇编在格式不大相径庭,VC中使用的是Intel的语法格式,而gcc/g++使用的是AT&T语法格式。所以我们在编写跨平台的C/C++代码的时候,若有需要用到汇编代码的时候,就显得有点为难了!虽然我们可以编写两个版本原创 2007-05-12 13:39:00 · 2435 阅读 · 0 评论