随笔分类 -  C 基础的实用举例

你是基础,随你好啦!
摘要:总结一下C语言中宏的一些特殊用法和几个容易踩的坑。由于本文主要参考GCC文档,某些细节(如宏参数中的空格是否处理之类)在别的编译器可能有细微差别,请参考相应文档。 阅读全文
posted @ 2015-03-06 16:21 weoken 阅读(250) 评论(0) 推荐(0)
摘要:一、typedef的用法 在C/C++语言中,typedef常用来定义一个标识符及关键字的别名,它是语言编译过程的一部分,但它并不实际分配内存空间,实例像: typedef int INT; typedef int ARRAY[10]; typedef (int*) pINT; 阅读全文
posted @ 2013-09-04 10:59 weoken 阅读(187) 评论(0) 推荐(0)
摘要:关于optstring,还有几点说明: 如果选项带参数,该选项后接冒号,比如上例中optstring为"a:b",指示a带参数,b没有参数; 如果选项带可选参数,该选项后接两个冒号,比如"a::b",表明a可能有参数,也可能没有; 阅读全文
posted @ 2013-08-14 18:29 weoken 阅读(259) 评论(0) 推荐(0)
摘要:inet_addr() 简述:将一个点间隔地址转换成一个in_addr。 #include unsigned long PASCAL FAR inet_addr( const struct FAR* cp); cp:一个以Internet标准“.”间隔的字符串。 阅读全文
posted @ 2013-08-06 09:05 weoken 阅读(1332) 评论(0) 推荐(0)
摘要:#include #include struct hostent *gethostbyname(const char *name); 这个函数的传入值是域名或者主机名,例如"www.google.cn"等等。传出值,是一个hostent的结构。如果函数调用失败,将返回NULL。 阅读全文
posted @ 2013-08-06 08:44 weoken 阅读(210) 评论(0) 推荐(0)
摘要:一个变量/函数,只要是在全局声明的,链接之后都隐含地在所有编译单元中可见。但你的声明可能仅出现在一个 .c 文件中,这就暗示你不想把这个名字暴露给其它编译单元,这种情况下就得用 static 关键字,表示这个名字具有“内部链接”,只对当前编译单元有效。但还有一种可能,你确实想暴露这个名字,但其它的编译单元希望知道这个名字被声明为什么类型,所以你需要在别的编译单元中用 extern 关键字描述这个声明,表示它具有“外部链接”,是在别的编译单元中定义的。不过通常的办法是在头文件中写出这个声明,让需要这个声明的文件包含它。 阅读全文
posted @ 2013-07-31 11:21 weoken 阅读(1935) 评论(0) 推荐(0)
摘要:使用Socket的程序在使用Socket之前必须调用WSAStartup函数。该函数的第一个参数指明程序请求使用的Socket版本,其中高位字节指明副版本、低位字节指明主版本;操作系统利用第二个参数返回请求的Socket的版本信息。当一个应用程序调用WSAStartup函数时,操作系统根据请求的Socket版本来搜索相应的Socket库,然后绑定找到的Socket库到该应用程序中。以后应用程序就可以调用所请求的Socket库中的其它Socket函数了。该函数执行成功后返回0。 阅读全文
posted @ 2013-07-30 10:58 weoken 阅读(540) 评论(0) 推荐(0)
摘要:popen() 函数 用 创建管道 的 方式启动一个 进程, 并调用 shell. 因为 管道是被定义成单向的, 所以 type 参数 只能定义成 只读或者 只写, 不能是 两者同时, 结果流也相应的 是只读 或者 只写. 阅读全文
posted @ 2013-07-12 13:59 weoken 阅读(297) 评论(0) 推荐(0)
摘要:回调和异步调用的关系非常紧密,通常我 们使用回调来实现异步消息的注册,通过异步调用来实现消息的通知。同步调用是三者当中最简单的,而回调又常常是异步调用的基础,因此,下面我们着重讨论回 调机制在不同软件架构中的实现。 阅读全文
posted @ 2013-02-26 11:15 weoken 阅读(261) 评论(0) 推荐(0)