27

c++数据类型的宽度和取值范围

c++数据类型的宽度和取值范围

int类型比较特殊,具体的字节数同机器字长和编译器有关。如果要保证移植性,尽量使用用__int16、__int32或__int64。

__int16、__int32这种数据类型在所有平台下都分配相同的字节。所以在移植上不存在问题。

所谓的不可移植是指:在一个平台上编写的代码无法在另一个平台上运行,不能达到期望的运行结果。

例如:在32位平台上(所谓32位平台是指通用寄存器的数据宽度是32)编写代码,int 类型分配4个字节,而在16位平台int类型则分配2个字节。那么在16位上编译出来的exe,其中是为int分配2字节,而在32位平台上运行时,会按照4个字节来解析,显然会出错误的!

而对于非int类型,目前为止,所有的类型分配的字节数都是兼容的,即不同平台对于同一个类型分配相同的字节数!

建议:如果欲编写跨平台程序,或交叉编译的程序时,在代码中尽量避免使用int类型,根据不同的需要可以用short,long,unsigned int 等来代替。

64位指的是cpu通用寄存器的数据宽度是64位的。

下面是各个类型一览表: Continue reading

26

c++ 浮点数精确度控制

c++ 浮点数精确度控制,sprintf()

 

 

25

gmp随机数实例

gmp随机数实例,gmp生成随机数

实例一:

实例二:

 

25

C/C++ gmp库之浮点数实例

c/c++,gmp库,gmp浮点数

gmp官方给出了接口说明,但是缺少实例,所以还是不能把gmp很好的利用。于是在网上查找gmp相关实例,查到的都是关于整数的,而且是早形参根本对不上,应该是早期的版本。这不是我想要的,而且我要研究的是浮点数。

gmp中文相关的文章太少了,查到的也都是关于gmp整数的实例,而且有些测试还不能通过。

求人不如求己,那就自己反复做各种测试,反复的看官方相关文档吧。

其实反复的测试,反复的看官方文档,确实有效。

gmp版本:

  • gmp-devel 6.2.1-1
  • gmpxx 6.2.1-1

Continue reading

20

MSYS2的安装与使用及MinGW64安装配置

MSYS2的安装与使用及MinGW64安装配置

MSYS2是工具和库的集合,为您提供了一个易于使用的环境,用于构建,安装和运行本机Windows软件。

它由一个名为mintty的命令行终端 ,bash,git和subversion之类的版本控制系统,tar和awk之类的工具,甚至是autotools之类的构建系统,全部基于Cygwin的修改版。尽管其中一些中心部分基于Cygwin,但MSYS2的主要重点是为本机Windows软件提供构建环境,并使使用Cygwin的部分最少。MSYS2为GCC,mingw-w64,CPython,CMake,Meson,OpenSSL,FFmpeg,Rust,Ruby等提供了最新的本机版本。

为了提供易于安装的软件包并保持更新状态,它具有一个名为Pacman的软件包管理系统,Arch Linux用户应该熟悉该系统 。它带来了许多强大的功能,例如依赖性解析和简单的完整系统升级,以及直接且可复制的程序包构建。我们的软件包存储库包含2000多个预安装的软件包,可供安装。

一、安装: Continue reading

20

cygwin找不到的命令在这里

cygwin命令cygwin找不到的命令在这里

clear
clear包含在 ncurses 包中,直接从默认源安装即可。
ncurses 是一个基于终端界面开发 类GUI应用程序 的库。

xgettext,msginit,msgfmt
这几个命令属于 gettext_devel 包,用于生成pot/po文件,以及编译po到mo格式。

aclocal
aclocal在 automake 包中,默认源中包含。

autoreconf
autoreconf在 autoconf 包中,默认源中包含。

telnet
安装 xinetd 和 inetutils 包即可,默认源中包含。

20

TI-RPC客户端、服务端接口实例

TI-RPC客户端服务端接口实例,cygwin libtirpc,

  • 如何传递参数和结果?
  • 绑定如何进行?
  • 传输协议如何处理?
  • 调用语义是什么?
  • 使用什么数据表示形式?

参数传递
TI-RPC允许将单个参数从客户端传递到服务器。如果需要多个参数,则可以将这些组件组合成一个被视为单个元素的结构。从服务器传递到客户端的信息作为函数的返回值传递。无法通过参数列表将信息从服务器传递回客户端。

捆绑
客户必须知道如何联系服务。两个必要的方面是找出服务器所在的主机,然后连接到实际的服务器进程。在每个主机上,一个名为rpcbind的服务管理RPC服务。TI-RPC使用可用的主机命名服务(例如主机文件,NIS +和DNS)来查找主机。

传输协议
传输协议指定如何在客户端和服务器之间传输呼叫消息和回复消息。TS-RPC使用TCP和UDP作为传输协议,但是TI-RPC的当前版本与传输无关,因此可以与任何传输协议一起使用。

呼叫语义
调用语义定义了客户端可以对远程过程的执行承担什么;特别是该过程执行了多少次。这些语义对于处理错误条件很重要。这三种选择分别是一次,最多一次和 至少一次。ONC +提供至少一次语义。远程调用的过程是幂等的:每次调用它们都应返回相同的结果,即使经过多次迭代也是如此。

数据表示
数据表示形式描述了参数和结果在流程之间传递时所使用的格式。为了在各种系统体系结构上起作用,RPC需要标准的数据表示形式。TI-RPC使用外部数据表示(XDR)。XDR是与机器无关的数据描述和编码协议。使用XDR,RPC可以处理任意数据结构,而不管不同主机的字节顺序或结构布局约定如何。有关XDR的详细讨论,请参见附录A,XDR技术说明和附录C,XDR协议规范。 Continue reading

18

gdb调试命令及基本使用姿势

gdb调试命令及基本使用姿势,C/C++调试工具gdb的基本使用姿势,linux下gdb调试,gdb调试工具,gdb调试命令,gdb调试教程,gdb调试实例

一、gdb命令

1、运行命令

run:(简写 r) ,其作用是运行程序,当遇到断点后,程序会在断点处停止运行,等待用户输入下一步的命令。
continue (简写c ):继续执行,到下一个断点处(或运行结束)
next:(简写 n),单步跟踪程序,当遇到函数调用时,也不进入此函数体;此命令同 step 的主要区别是,step 遇到用户自定义的函数,将步进到函数中去运行,而 next 则直接调用函数,不会进入到函数体内。
step (简写 s):单步调试如果有函数调用,则进入函数;与命令n不同,n是不进入调用的函数的
until:(简写 u)当你厌倦了在一个循环体内单步跟踪时,这个命令可以运行程序直到退出循环体。
until+行号: 运行至某行,不仅仅用来跳出循环
finish: 运行程序,直到当前函数完成返回,并打印函数返回时的堆栈地址和返回值及参数值等信息。
call 函数(参数):调用程序中可见的函数,并传递“参数”,如:call gdb_test(55)
quit:(简写 q) ,退出gdb Continue reading

17

C++ cygwin环境测试JSON库报错:cannot find -ljson

C++ cygwin环境测试JSON库报错:cannot find -ljson

这么写报错:

这么写还报错:

就想不明白了,到根目录下的/lib文件夹看看

恍然大悟呀,这会我才想起来,当初Cygwin Setup安装JSON库的时间,库的开发包名称就是libjsoncpp-devel,编译命令改为如下:

通畅了。

 

17

N个强大而实用的C/C++框架和库简介及下载地址

N个强大而实用的C/C++框架和库C框架C库C第三方库C++框架C++库C++第三方库

值得学习的C语言开源项目- 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行。
下载链接:http://home.tiscali.cz/~cz210552/webbench.html
- 2. Tinyhttpdtinyhttpd是一个超轻量型Http Server,使用C语言开发,全部代码只有502行(包括注释),附带一个简单的Client,可以通过阅读这段代码理解一个 Http Server 的本质。
下载链接:http://sourceforge.net/projects/tinyhttpd/
- 3. cJSONcJSON是C语言中的一个JSON编解码器,非常轻量级,C文件只有500多行,速度也非常理想。
cJSON也存在几个弱点,虽然功能不是非常强大,但cJSON的小身板和速度是最值得赞赏的。其代码被非常好地维护着,结构也简单易懂,可以作为一个非常好的C语言项目进行学习。
项目主页:http://sourceforge.net/projects/cjson/
- 4. CMockerycmockery是google发布的用于C单元测试的一个轻量级的框架。它很小巧,对其他开源包没有依赖,对被测试代码侵入性小。cmockery的源代码行数不到3K,你阅读一下will_return和mock的源代码就一目了然了。
主要特点: Continue reading