标签存档: C语言

Python的代码缩进

python c在Fortran之后,好象没见过如此对代码书写位置有严格要求的语言。 对于一个出现了不过20年的相对新型的语言来说,把代码缩进作为语法的一部分肯定有其理由。这个原因是: 程序的可读性。 无论是对C/C++,Java,C#或VB之类和Pascal之类的语言来说,语言在语句都是可以自由书写的。通过适当的方式,一个语句可以放在上一行也可以放在下一行。若在C类语言中写了下面一个语句块:

继续阅读 »

64位Linux下编译器的指针长度

linux 64位 其实一直没有认真测试过这个问题,而64位系统通常也对32位程序提供了很好的兼容性。 已知的是,int在32位与64位下均为32位,而long型通常会有区别,32位下通常等于int型,而64位下会变成64位长。 指针型,比如int * kkk=3; printf(“%d”,sizeof(kkk));在RHEL 5.5 64位版下编译,由于默认用64位编译,所以cc -o test test.c后,打印出的值为8。但加上32位编译的参数,cc -o test test.c -m32,打印出的值则变为32。

Python的SWIG,ctypes等与C的互操作性

python swig ctypes在许多情况下,Python能够调用C模块或者C里面调用Python解释器是非常有用的,语言之间取长补短有助于更好的解决问题。这里需要明白一个概念,我们平时所说的Python标准实现,其实应该称为CPython,相应的,还有IronPython(C#实现)和Jython(java)实现,另两种实现可以无缝调用.net库和Java类库。而对于CPython,经过多年的积累和演化,调用C库有许多可选择的工具,下面是这些工具的简要介绍:

继续阅读 »

RHEL的GCC中print打印%的问题。

redhat gcc printf linuxRHEL5.5 64位系统,GCC编译环境,版本就不记得了。没时时间深究这个问题,仅作记录。 一条printf(“\%”);语句,无法显示输出这个%字符,而排在ascii码表%前一位和后一位的字符,却输出正常。 若用printf(“\%\n”);则亦可正常输出。 用printf(“\x25″);也无法显示输出。最后试验只有用printf(“%%”);即两个连续的%才可输出,倒跟\\有些相似了。 很久不用C语言,不知其它版本编译器中如何解释。

Linux的.so文件调用embed Python的问题

gcc python linuxPython 2.7.3用./configure make make install生成后,在其目录下有libpython2.7.a文件。此文件可用于对C调用python的可执行文件的链接。然而将调用python的C函数编译进so的过程中却报错。提示需加-fPIC参数之类,开始一愣,以为是.so的源码编译参数有问题,查看了确实有-fPIC和-shared的选项。后来才想起.a文件一般不可直接静态链接入.so文件。查看Python 2.7.3的Makefile文件,里面有.so和dylib之类的编译指令,但是实际编译却未产生.so文件。

继续阅读 »

C语言中调用Python函数

gcc python linuxC中可以嵌入方式调用Python脚本程序。混合语言编程的唯一好处就是取长补短。比如C语言的性能和底层操作能力。Python则有高级数据结构和各种功能强大的模块。我们假设有一个中间业务平台,用C开发通讯层,但业务流程用C开发却并不合适。C缺乏高级文本处理函数,不够简练,任何一个无关紧要的变量都需要强类型定义并分配好空间。这些特点让人难于把精力投放在实现业务逻辑上。而Python语言正好适合去做这些。

继续阅读 »

Linux下编译安装Python 2.7.3的问题

gcc python linux下载了linux版的python 2.7.3的安装包,解压缩,./configure make和make install,然后python顺利升级至2.7.3,本以为没什么问题。但是在编译源文件目录下Demo/embed目录下的一个C调用python的例子时,报错,提示没有readline库。这才发现问题。于是make clean和make distclean,然后重新配置和编译,发现提示缺少了不少库,如readline、sqlite和bz2等等,缺少了这些模块,指不定运行什么程序或用到什么功能时就会报错。

继续阅读 »

C语言的字符串库Bstrlib

c语言 bstrlibC语言本身的字符串函数库非但不全,而且有某些安全隐患,如以’\0’为字符串结尾,但’\0’本身实际为一字符。还有strtok在多线程下的问题等。其它语言常见的一些函数,如mid ,split等也都欠奉。Better String Library,即bstrlib库的设计目标是为解决这一问题,这个库完全独立于系统平台,推荐代替标准C字符串库使用。对于C++而言,bstrlib拥有一个健壮的C++包装器,通过重载操作符,丰富的构造器等,实现比std::string更多的功能和更好的性能。

继续阅读 »

Win下Cygwin及Eclipse C++开发环境的安装

cygwin eclipse c语言本机上的VMware 8.0能配置64位 linux虚拟硬件,并安装rhel 5.5成功,但linux图形环境使用eclipse始终不太舒服。应用最终将在rhel 5.5和gcc环境下编译运行,因此在winxp下安装eclipse,并安装gcc for windows 成为选择。在mingGW和cygwin上,自然选择了后者。

继续阅读 »

银联文档中关于Socket连接属性的有用信息

c语言 socket在利用socket技术编写通信程序时,为了保证通信双方可以正常通信,需要设置相关的选项,其中有的选项是协议相关的。在不同的系统中,socket选项有不同的默认值。这里只规定几个主要的socket选项设置,其他选项均使用系统默认值。

继续阅读 »

第 1 页,共 2 页12