
C
文章平均质量分 60
大熊猫侯佩最爱的语言之一: C
大熊猫侯佩
一枚贪吃路痴还未秃码农。优快云 博客专家,iOS 与 Swift 版块版主,热爱苹果开发。
人生看淡,不服就干!
展开
-
GNU中的处理目标文件的若干工具
AR 创建静态库,插入、删除、列出原创 2014-08-29 15:21:43 · 1043 阅读 · 0 评论 -
关于gcc的一点小人性化提示
现在对于大多数平台的C编译器来说都会有很多种选择,而gcc和clang无疑是2个非常优秀的C编译器。当然他们也不止是C编译器。我最近用clang的比较多,原因有很多。不过一些小的细节很让我喜欢,比如OS X系统中,clang的编译器警告或错误提示是以彩色文本醒目打印出来的:而gcc则无论如何打印的颜色都一样(我不知道是否有什么设置可以改变这一点。):但是gcc也有其人性化的原创 2014-10-27 05:44:29 · 2509 阅读 · 0 评论 -
C语言有哪些鲜为人知的特性?
译注:本文摘编自 Quora 的一个热门问答贴。 请在linux系统下测试本文中出现的代码Andrew Weimholt 的回复:switch语句中的case 关键词可以放在if-else或者是循环当中1234567891011121314转载 2014-09-28 20:41:35 · 1358 阅读 · 1 评论 -
obj-c编程13:归档
这篇归档内容的博文也挺有趣的,笨猫对好玩的东西一项感兴趣啊!如果yong原创 2014-07-03 15:15:04 · 1571 阅读 · 0 评论 -
gcc如何生成预编译头文件(.gch)
1 建立comm.h2 main.c中b原创 2014-07-03 20:17:09 · 3635 阅读 · 0 评论 -
C语言中如何写一个简单可移植而又足够随机的随机数生成器
在Cyu'yan'z原创 2014-07-03 20:50:15 · 3449 阅读 · 0 评论 -
C标准中关于空指针的那些事
C标准不保证原创 2014-07-03 20:28:34 · 1182 阅读 · 0 评论 -
obj-c编程12:复制对象
好吧,上一篇原创 2014-07-03 09:43:10 · 1264 阅读 · 0 评论 -
一个将阿拉伯数字转换为中文数字近似读法的程序
偶尔突发奇想,写了一个将阿拉伯数字转换为中文数字近似值的程序:#include #include #include #include #include #include const char *ChineseNum[] = {"零","一","二","三","四",\ "五","六","七","八","九","十"}; const char *ChineseUnit[]原创 2012-12-02 20:56:36 · 2195 阅读 · 0 评论 -
快速识别系统是否支持sysenter/sysexit
地球人都知道较新的处理器支持sysenter/sysexit指令以代替老的Int 2e/iretd指令。新指令避免的2次查表,速度得到提升。那么如何知道自己的cpu是否支持新指令呢?答案是使用cpuid指令,该指令返回值放在ecx和edx中,其中edx包含了SEP位(SysEnter/SysExit Present,第11位),该位表示了是否支持sysenter/sysexit指令,快原创 2012-11-07 15:54:19 · 1333 阅读 · 1 评论 -
GCC的内嵌汇编语法
1 Overview开发一个OS,尽管绝大部分代码只需要用C/C++等高级语言就可以了,但至少和硬件相关部分的代码需要使用汇编语言,另外,由于启动部分的代码有大小限制,使用精练的汇编可以缩小目标代码的Size。另外,对于某些需要被经常调用的代码,使用汇编来写可以提高性能。所以我们必须了解汇编语言,即使你有可能并不喜欢它。 如果我们选择的OS开发工具是GCC以及GAS的话,就必须了解转载 2012-12-10 21:11:33 · 1483 阅读 · 0 评论 -
[转贴]gprof使用备忘
gprof介绍gprof是GNU profiler工具。可以显示程序运行的“flatprofile”,包括每个函数的调用次数,每个函数消耗的处理器时间。也可以显示“调用图”,包括函数的调用关系,每个函数调用花费了多少时间。还可以显示“注释的源代码”,是程序源代码的一个复本,标记有程序中每行代码的执行次数。为gprof编译程序在编译或链接源程序的时候在编译器的命令行参数中加入“-pg”选项,编译时编转载 2008-06-08 12:16:00 · 3513 阅读 · 0 评论 -
用汇编写特殊要求的strlen
题目:不允许调用库函数,也不允许使用任何全局或局部变量编写 int strlen(char *strDest);用汇编的实现:int strlen(const char *s){ __asm__ __volatile__("movl %%esi,%%eax;0:testb $0xFF,(%%eax);" "jz 1f;inc %%eax;jmp原创 2008-09-23 17:52:00 · 2424 阅读 · 3 评论 -
gcc或clang中消除特定警告的方法
一般在编译代码时会有相当多的警告信息,尤其当我们使用了-Wall选项的时候.-Wall绝不是像其字面意思一样打开所有警告.不过它打开的警告也相当多了.对于一些我们已知"无害"但仍然打印出来挤占可怜的控制台空间的警告,我们当然可以将其"屏蔽"掉. 就拿以下代码来说:#include #include #include #include int main(void){ lo原创 2014-10-25 15:59:22 · 8371 阅读 · 0 评论 -
mac OS X 10.10更新gcc 4.9.1后默认无法编译连接的问题
MAC OS X10.10升级前使用的低版本的gcc(好像是4.7.x),正常编译可以完成,不过会出现警告:couldn't understand kern.osversion `14.0.0'网友说好像是Xcode版本过低(使用的是Xcode6 beta4),现在正在升级Xcode 6.1。与此同时,使用HomeBrew升级最新的gcc 4.9.1(X86_64)。后来编译时发现gc原创 2014-10-27 10:17:36 · 9413 阅读 · 0 评论 -
Swift中如何转换不同类型的Mutable指针
在Swift中我们拥有强大高级逻辑抽象能力的同时,低级底层操作被刻意的限制了.但是有些情况下我们仍然想做一些在C语言中的hack工作,下面本猫就带大家看一看如何做这样的事.hacking is happy!!! ;]如标题所说,现在我有一个Int变量x,我想取得它的地址,然后转换为Char类型的地址,然后将改地址的内容+1,如果用C语言来表示就是:int x = 121,*pi = &xchar原创 2016-06-07 17:22:49 · 3288 阅读 · 0 评论 -
linux下用gtk+写比赛赌博GUI小游戏
游戏界面全部由gtk的GUI完成,没有使用openGL之类的高端货。游戏玩法就是8位选手比赛跑步,你可以在赛前赌哪位选手会赢,如果输了cash会被扣除,反之cash会增加。无聊写了3个选项:小数时间格式、启用作弊和随机选择选手。其中启用作弊是可以在选手比赛中再随时修改赌博对象。源代码可以在csdn下载中找到:run_game_in_linux原创 2015-09-30 08:40:03 · 1939 阅读 · 0 评论 -
linux下gtk+一个将字符串大写化的小示例
首先用glade画图形界面: 并且设置gtk元素名称(ID)以及设置事件回调函数。下面写代码:#include <gtk/gtk.h>#include <string.h>#define UI_PATH "./entry.ui"#define MAIN_WINDOW "window"#define CHK_EDITABLE "chk_editable"#define CHK_VISIBLE原创 2015-08-02 07:32:32 · 1048 阅读 · 0 评论 -
gtk+2.0中GtkObject结构中没有klass成员的解决办法
gtk+2.0中一些较老的程序中会有如下的代码:#define EVENT_METHOD(obj, method) GTK_WIDGET_CLASS(GTK_OBJECT(obj)->klass)->method但是编译时会出现如下错误:no member named 'klass' in 'struct _GtkObject'使用编译的库是gtk+2.0,在源代码开头加上定义#define GTK原创 2015-08-01 18:26:31 · 955 阅读 · 0 评论 -
linux下显示不规则图片窗口
测试环境是ubuntu15.04,使用的图形库是gtk+。图片格式采用的是X11的xpm格式,首先从网上找一个背景透明的png图片,然后用图形转换工具(比如gimp)转换为xpm格式。程序代码如下:#include <gtk/gtk.h>void close_app(GtkWidget *widget,GdkEvent *event,gpointer data){ gtk_main_quit原创 2015-08-01 13:12:09 · 1061 阅读 · 0 评论 -
gtk+程序在关闭主窗口时的事件流
当鼠标单击gtk+窗口的关闭按钮时,程序首先接收到delete_event,当该事件处理函数返回TRUE表示事件已处理禁止进一步传播,从而取消关闭操作;当返回FALSE时,事件消息进一步向上传播,此时会调用gtk+默认的处理函数,该函数产生destroy事件,一般在该事件的处理函数中用gtk_main_quit将窗口关闭;这时gtk_main()消息环退出,因而程序退出。下面是示例代码:#inclu原创 2015-08-10 06:30:01 · 3054 阅读 · 0 评论 -
gtk程序运行报 main_loop!=NULL 错误的解决办法
现象是将按钮的clicked Action与gtk_main_quit函数绑定起来会发生如上错误。原因不明。 如果将window的destroy Action与gtk_main_quit绑定是没有问题的。解决办法是将clicked与自定义的Action绑定,然后在该Action函数中调用gtk函数将window手动销毁。注意user_data要设置为window。 然后是quit_handle的原创 2015-07-17 07:44:00 · 3053 阅读 · 0 评论 -
在Mac OS X下搭建gtk编译环境
首先安装 XQuartz X11 for Mac ,可以到这里下载:http://xquartz.macosforge.org/landing/需要一个包管理器,我用的是brew,其他的操作类似:brew install gtk+#或者brew install gtk+3然后用pkg-config --libs --cflags gtk+-2.0#或者pkg-config --libs --原创 2015-07-15 06:37:17 · 6306 阅读 · 0 评论 -
ubuntu下搭建gtk+编程环境
首先gtk+项目主页为: http://www.gtk.org/gtk+现在有2和3两种版本,使用sudo apt-get install gnome-core-devel可以一次性安装2个版本,你也可单独安装3:sudo apt-get install libgtk-3-devgcc或clang之类的编译器工具集合自然不用说了,可以用如下命令安装gcc:sudo apt-get install原创 2015-07-09 08:51:04 · 3628 阅读 · 0 评论 -
javascript、ruby和C性能一瞥(2)
好吧,最后让我们用C来实现,看看再能榨取多少性能。注意我没有改变算法,C的算法和之前的3种都是基本相同的:#include <stdio.h>#include <stdlib.h>#include <stdbool.h>#include <math.h>#include <string.h>#include <time.h>#include <unistd.h>typedef unsig原创 2015-04-01 17:42:24 · 1662 阅读 · 0 评论 -
ruby中如何直接编译运行C代码
我们知道ruby通过C EXT可以很方便的运行C代码,其实只要是C接口的语言都可以,比如汇编语言也可以哦。但是一些简单的函数难道害得费劲用C扩展的方式吗?其实ruby gem里有RubyInline包,通过它可以在ruby源代码里写C代码,然后调用执行啊! 直接用 gem install RubyInline 安装吧!我们测试一下:require 'inline'class A原创 2014-11-30 20:46:05 · 3951 阅读 · 0 评论 -
wingdb开发过程中遇到一个比较“头疼”的bug
windows7,调试原创 2011-08-08 13:56:55 · 3180 阅读 · 3 评论 -
关于GUN C析构函数的那些事
GNU C编译器在编译PE文件时,构造了称为.dtos和.ctors的特殊表格项,分别对应于构造和析构函数,注意这个和C++里的构造函数不太一样,这里的函数是C语言中全局型的构造和析构函数,我们这里只看析构函数dtos。static void clear(void) __attribute__((destructor));void clear(void){ puts("by原创 2012-11-17 19:57:06 · 2834 阅读 · 0 评论 -
一个比较精确计算cpu主频的程序
以前写的一段计算cpu主频的代码,考虑到了某些cpu的负载平衡能力。#include #include #include #include #include static ULONGLONG g_pf_s,g_pf_e,g_sys_freq = {0};static ULONGLONG g_cycle_s,g_cycle_passed;//使CPU进入最高性能状态WINAP原创 2012-12-03 18:10:31 · 1627 阅读 · 0 评论 -
[原创]另类调用 printf 完成任务的方法
昨天逛csdn/c版,看到如下一道题:函数原形已经给出:int p(int i, int N); 功能:调用该函数,打印如下格式的输出,例p(1, 7); 1234567654321 即每行一个数字。(注意:N只打印一次) 要求: 1. 函数中唯一能够调用的函数就是printf。2. 不准使用如下的关键字:typedef, enum, do, while, for, switch原创 2008-06-02 15:56:00 · 2507 阅读 · 7 评论 -
由ANSI C标准咬文嚼字发现滴东东
由ANSI C标准咬文嚼字发现滴东东 乱弹奥运磨炼曲正酣,钢铁功夫解眼馋;步履蹒跚遭埋怨;呆呆傻傻惹人烦;浑浑噩噩心难安;四目相对眼茫然;龙游浅水被虾戏;死不悔改表乱弹! (表:biao第四声) 侯佩|hopy 2008年05月08日于合肥电心 忙来有原创 2008-05-09 11:00:00 · 1829 阅读 · 0 评论 -
[原创]Unlocker加强版技术特征
Unlocker加强版技术特征 Unlocker是一个偶闲时写的小工具,主要功能有: 1. 解锁已打开文件; 2.建立以特定用户身份的shell。上一个版本的概述在:原创]C# 与 汇编 的一次亲密接触。加强版本新增的特征有: 1.采取了和 regmon原创 2008-04-27 22:17:00 · 2578 阅读 · 1 评论 -
[原创]浅谈如何使用gcc开发NT核心驱动程序
[原创]浅谈如何使用gcc开发NT核心驱动程序 一谈到在 Win NT 下开发核心驱动程序,可能不少人首先都会想到微软“正统”的VC来。诚然,用VC 配合 WINDDK 的确工作的不错,但或许我们可以让其变得更简单更完善一些。 其实偶一般是用 Masm32v9 + EditPlus2 编写 NT内核驱动,仅此而已。从环境搭建的便捷性和编写代码的灵活性来说无疑原创 2008-04-11 13:53:00 · 2818 阅读 · 3 评论 -
[转贴]内核级HOOK的几种实现与应用
内核级HOOK的几种实现与应用 作者: sinister 内核级HOOK的几种实现与应用 Author : s转载 2007-09-25 16:12:00 · 2576 阅读 · 1 评论 -
[转贴]利用伪造内核文件来绕过IceSword的检测
[转贴]利用伪造内核文件来绕过IceSword的检测 作者:倪茂志邮件:backspray008@gmail.com完成于:2005.12.20文章分为八个部分: 一、为什么需要伪造内核 二、伪造内核文件 三、隐藏进程 四、隐藏内核模块 五、隐藏服务 六、隐藏注册表 七、隐藏文件转载 2007-09-16 22:00:00 · 2172 阅读 · 0 评论 -
[转贴]提升进程权限为debug权限,无法禁止进程
提升进程权限为debug权限,无法禁止进程2007-03-30 20:58 在2004年11期黑防上刊登了《小工具巧删Guest/Administrator账户》这篇文章,有不少朋友来信询问工具是如何编写的,其实这个工具里面大部分代码是我拷贝FU_Rootkit过来的。既然朋友们喜欢,这几天我又转载 2007-09-10 16:16:00 · 3517 阅读 · 2 评论 -
对C++ STL iostram 中 cin.get(char* cs,int size,char c='/n') 的理解
其中 cs 是指向 char 的 buf, size是buf的长度,c是终止字符(default==/n)。 void main(){ const int size = 16; char cs[size]; while(cin.get(cs,size)) { int i=cin.gcount(); cout cin.ignore(); }我猜测 cin原创 2007-09-09 16:51:00 · 2670 阅读 · 0 评论 -
[转贴]Administrator用户直接获取SYSTEM权限
Administrator用户直接获取SYSTEM权限来源:http://www.nsfocus.com作者:"scz" scz@nsfocus.com>标题: MSDN系列(3)--Administrator用户直接获取SYSTEM权限日期: 2003-06-21 21:51更新:-------------------------------------------------转载 2007-09-10 16:36:00 · 7297 阅读 · 0 评论 -
[转贴]Gloomy对Windows内核的分析(研究CreateProcess)
(转载)Gloomy对Windows内核的分析(研究CreateProcess)我给出一个反汇编Win32 API函数CreateProcess的例子,来演示研究子系统的技术,同时演示Win32是如何与Windows NT的执行系统协同工作的。从MSDN中得到函数原型:BOOL CreateProcess( LPCTSTR lpApplicatio转载 2007-09-10 16:33:00 · 2136 阅读 · 0 评论 -
[转贴]在Windows 2003中HOOK ZwCreateProcessEx
以下部分全部为转贴,特此声明!***********************************************************在Windows 2003中HOOK ZwCreateProcessEx创建时间:2005-03-09文章属性:原创文章提交:suei8423 (suei8423_at_163.com)作者:ZwelL工作需要,想控制进程的创建,于是HOO转载 2007-09-10 16:23:00 · 2389 阅读 · 0 评论