March 11, 2011
| 作者:白菜
|
分类:C语言
本人最烦linux,虽然装了个ubuntu的虚拟机和一个红旗的非主流系统,但几十年不去碰一下,除了调试工程偶尔开一下,懒得来回改HOST,基本很少用。不过我倒是很想在win上装个GCC,这个开发即快捷,又跨平台,还不影响我看片听歌。
先是装了个codeblock 10的版本,觉得这软件挺好的,但是比较郁闷的是它的代码提示插件怎么弄也不起作用,还有就是编译速度太慢。最后发现某网友制作的msys集合包,使用后感觉贼好。特分享下。
地址:
http://code.google.com/p/msys-cn/.下面是它的简介:
- MSYS不是一个操作系统,而是一个通过将Linux源代码在Win32上编译而成的UNIX工作环境;
- MSYS类似于Cygwin,但是由于工作原理的不同,速度更快、体积更小、功能强大、便于携带;
- 使用MSYS可以完整的取代商业的VC环境,同样开发出商业版权的程序而不受任何版权限制;
- 本项目开发了mpkg包管理程序,添加对各种开源库支持,提供MSYS发行版的方便下载服务;
- 默认提供捆绑在一起的ASM/C/C++/ObjC/ObjC++/Fortran编译器,便捷的适用于各种用户;
- 编译器中预先配置好了所需的DK、PthreaDDK、DirectX 9 Sd库,无需再自己搜集组合;
- 更新的4.3.2版本GCC编译器为C/C++/Fortran用户提供了内建的OpenMP并行计算支持;
- 本项目的初衷,是为Phoenix操作系统开发项目提开发环境,因而适合OS开发爱好者使用;
- 项目通过GNU开发的info帮助系统提供了所有命令的帮助手册,开发者应当用MSDN作为函数手册;
February 15, 2011
| 作者:白菜
|
分类:php,C语言
几天前,有一位童鞋在夜色群里提到到php在windows下与exe程序的交互。当时看了下他写的C程序,就发觉其思路不对,不过那天刚回到公司比较颓废也就懒得动手了。趁着这几天有空,再写写这方面的东西,其实很简单,权当抛砖引玉。这方面的资料不多,虽然说php在win下调exe有点蛋疼,不过蛋疼就蛋疼吧,权当玩玩。
结合网上提供的C++操作sqlite的方法,我们来写一个稍微复杂的应用,体验一下。
首先用vc2008写一个exe程序,代码如下:
#include "stdafx.h"
#include <string>
#include <iostream>
#include <sstream>
#include "../sqlite3_lib/sqlite3.h"
/**
演示php调用C++进行数据操作的过程。
**/
阅读剩余部分...
November 27, 2010
| 作者:白菜
|
分类:php
前言:本文以编译PHP的vld扩展为例来叙述如何在windows系统下使用VC(那个CYGWIN有点蛋疼)编译最新版PHP5.3.3,要编译完整的PHP代码包,则大同小异.
关键词:PHP5.3.3,PHP扩展开发,编译PHP
开始了:
环境:VC6.0,windowsXP ,PHP5.3.3
(1)下载PHP5.3.3的源代码包(http://www.php.net/)以及vld扩展源代码(http://pecl.php.net/package/vld/)。
解压,我的是解压在D盘根目录下,路径即为d:\php-5.3.3,把vld的源代码复制到\ext\vld目录下。
(2)在Windows平台启动 VC++ 6.0, 【文件】(File)->【新建】(New), 在 【工程】(Project)中选择 【Win32 Dynamic-Link Library】, 填写上 【工程名称】(Project Name) 和 【位置】(Location)。
(3)点击确定后,在第二屏选中 【一个空的DLL工程】(An empty DLL project), 点 【完成】Finish, 完成创建。此时会可能会弹出一个信息框,点击确定。
(4)选择左侧的【Source Files】,点击右键,选择【添加文件到目录】,将D:\php-5.3.3\ext\vld目录下的所有C文件添加到此目录,同样选择【Header Files】,添加所有的头文件到目录。

(5)修改工程设置,选择【工程】(Project)->【设置】(Settings)->【C/C++】,在【工程选项】(Project Options:)的 最后加上 /Tc,在预处理程序定义中添加如下宏定义:
ZEND_DEBUG=0,COMPILE_DL_VLD,ZTS=1,ZEND_WIN32,PHP_WIN32,HAVE_VLD=1
如果你需要编译其它扩展,请将COMPILE_DL_VLD 和 HAVE_VLD=1,后面的 “VLD” 改成和你要创建的工程名一致。
阅读剩余部分...
July 21, 2010
| 作者:白菜
|
分类:编程算法,C语言
这几天,本站推出了几篇关于C语言的很多文章如下所示:
我们可以看到很多C语言相关的一些东西。比如《语言的歧义》主要告诉了大家C语言中你意想不到的错误以及一些歧义上的东西。而《谁说C语言很简单》则通过一些看似你从来不可能写出的代码来告诉大家C语言并不是一件容易事情。《6个变态的hello world》和《如何弄乱C的源代码》则以一种极端的方式告诉大家,不要以为咱们自己写不出混乱的代码,每个程序员其实都有把代码搞得一团乱的潜质。通过这些文章,相信你对编程或是你觉得很简单的C语言有了一些了解。是的,很不容易吧,以前是不是低估了编程和C语言?今天是否我们又在低估C++和Java呢?
本篇文章《C语言的谜题》展示了14个C语言的迷题以及答案,代码应该是足够清楚的,而且我也相信有相当的一些例子可能是我们日常工作可能会见得到的。通过这些迷题,希望你能更了解C语言。如果你不看答案,不知道是否有把握回答各个谜题?让我们来试试。
阅读剩余部分...
July 21, 2010
| 作者:白菜
|
分类:编程算法,C语言
昨天同事问了我一个问题,有两个循环语句:
for(i = n; i > 0; i--)
{
…
}
for(i = 0; i < n; i++)
{
…
}
为什么前者比后者快?
我当时的解释是:
i--操作本身会影响CPSR(当前程序状态寄存器),CPSR常见的标志有N(结果为负), Z(结果为0),C(有进位),O(有溢出)。i > 0,可以直接通过Z标志判断出来。
i++操作也会影响CPSR(当前程序状态寄存器),但只影响O(有溢出)标志,这对于i < n的判断没有任何帮助。所以还需要一条额外的比较指令,也就是说每个循环要多执行一条指令。
(这是五年前tjww告诉我的,当时他在AVR上写一个LCD驱动程序,使用后者LCD会闪烁,使用前者则没有问题。)
阅读剩余部分...