c++的对象..
头文件
#ifndef Test1_h #define Test1_h class MyClass { public: int x; MyClass(); virtual ~MyClass(); void dump(); }; #endif
源文件
#include <test1.h> #include <iostream> MyClass::MyClass() { std::cout<<"construct function"<<std::endl; } MyClass::~MyClass() { std::cout<<"destruct"<<std::endl; } void MyClass::dump() { std::cout<<"dump"<<std::endl; }
调用:
int main() { MyClass m; m.dump(); //结果是 //construct //dump //desturct MyClass *p; p->dump(); //结果是 //dump MyClass *p = new MyClass(); p->dump(); //结果是 //construct //dump MyClass *p = new MyClass(); p->dump(); delete(p); //结果是 //construct //dump //desturct
淡淡的
glib编程 (main event loop)
最简单的例子
int main(int argc,char* argv) { if (g_thread_supported() == 0) g_thread_init(NULL); g_print("g_main_loop_new\n"); loop=g_main_loop_new(NULL,FALSE); g_print("g_main_loop_run\n"); g_main_loop_run(loop); g_print("g_main_loop_unref\n"); g_main_loop_unref(loop); return 0; }
你会发现程序会在 g_main_loop_run函数阻塞,这就是glib main loop了,如果没有人通知它退出,它是不会退出的。
通知循环退出的函数是 g_main_loop_quit。
怎么通知呢?主线程被g_main_loop_run阻塞了,没办法运行quit。本来我准备开一个线 程,sleep一秒钟,然后调用g_main_loop_quit。不过一想我们都在学习高精尖武器了,还用土枪土炮干啥。使用glib的定时器吧~
#include <glib.h> GMainLoop *loop; gint counter = 10; gboolean mycallback(gpointer arg) { g_print("."); if(--counter==0){ g_print("\n"); //exiting lop g_main_loop_quit(loop); return FALSE; } return TRUE; } int main(int argc,char* argv) { if (g_thread_supported() == 0) g_thread_init(NULL); g_print("g_main_loop_new\n"); loop=g_main_loop_new(NULL,FALSE); g_timeout_add(100,mycallback,NULL); g_print("g_main_loop_run\n"); g_main_loop_run(loop); g_print("g_main_loop_unref\n"); g_main_loop_unref(loop); return 0; }
.
一秒钟后,程 序正常退出了!
引:http://baicj.spaces.live.com/blog/cns!F60F8E193FAC08E4!410.entry
glib编程..
一,标准宏
(一)G_OS_WIN32, 判断当前系统是否是win32
#include <glib.h> int main(int argc,char* argv) { #ifdef G_OS_WIN32 printf("youare in windows os"); #endif return 0; }
二,版本信息
1.glib_major_version glib主版本信息
//extern const guint glib_major_version; printf("glib version is %d",glib_major_version);
2.glib_minor_version 次版本号
//extern const guint glib_minor_version; printf("glib minor version is %d \r\n",glib_minor_version);
3.其他:
glib_micro_version
glib_binary_age
glib_interface_age
4.检查版本兼容:GLIB_CHECK_VERSION
if (!GLIB_CHECK_VERSION (1, 2, 0)) g_error ("GLib version 1.2.0 or above is needed");
@g_error : 弹出对话框,显示错误信息。
..
update log:
gtk在windows下编程环境的搭建...
首先,gtk是很复杂的库,依赖的东西也多,什么什么pango, glib之类的,如果你在代码中用 #include "gtk/gtk.h" …… 不用make和pkg-config是很难去编译的,当然我是指不用任何ide..只用文本编辑的方式来写的。。。
好了,我忘了从哪里下载了那个一个exe文件就可以安装所有环境的文件了,大概是从gimp那里。。
大概是:
sf的一个站http://sourceforge.net/project /showfiles.php?group_id=98754
我这里下的是 gtk-2.12.9-win32-2.exe
http://downloads.sourceforge.net/gladewin32/gtk-dev-2.12.9-win32-2.exe?modtime=1208660130&big_mirror=0
就是下载gtk-dev-x.xx.x-win32-2.exe了。。。
安装到某个目录,然后设置环境变量,好利用make直接编译程序:
GTK_BASEPATH = D:\work\cpp\GTK_DEV\GTK
PATH里加入: %GTK_BASEPATH%\bin; (因为这样就可以执行pkg-config了)
PKG_CONFIG_PATH = D:\work\cpp\GTK_DEV\GTK\lib\pkgconfig
设置PKG_CONFIG_PATH的路径,指向有那些PC文件的地方。
写一个简单的程序,叫gtk_test1.c吧
#include "gtk/gtk.h" int main(int argc,char *argv[]) { GtkWidget *window; gtk_init(&argc,&argv); window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_widget_show(window); gtk_main(); return 0; }
写个makefile
CC=D:/MinGW/bin/gcc.exe Gtk1: ${CC} Gtk_test.c -o gtk_test1.exe `pkg-config --cflags --libs gtk+-2.0`
然后make一下: make gtk1
这样就应该可以了。。。pkg-config那里有个错误,就是cario.pc里面多了一个:
10行:Requires.private: freetype2 >= 9.7.3 fontconfig libpng12 pixman-1 >= 0.10.0
改成
Requires.private: freetype2 >= 9.7.3 fontconfig libpng12
去掉pixman的依赖,就可以了。。。
phpunit中的分组测试
首先确保你的代码像这样:
<?php class TestTest extends PHPUnit_Framework_TestCase{ /** * @group a */ public function testOne() { } /** * @group a * @group b */ public function testTwo() { } } ?>
sb@vmware ~ % phpunit --group a TestTest
PHPUnit 3.2.0-dev by Sebastian Bergmann.
Time: 0 seconds
OK (2 tests)
sb@vmware ~ % phpunit --group b TestTest
PHPUnit 3.2.0-dev by Sebastian Bergmann.
Time: 0 seconds
OK (1 test)