- 博客(5)
- 收藏
- 关注
原创 C语言类型声明的文法
尝试过3种思路,最后才写出一个满意的推导式。支持带id和省略id的写法。如:long int * ( * id ) ()也支持省略id,即 long int * ( * ) () ,这也会被视为一个合乎语法的串,从语义上再根据上下文来决定缺省id是否合乎语义就可以了。先将 c 的类型声明先分为2个部分,前置类型段和符号声明段。再将符号声明段分为3个部分。
2013-12-19 02:00:08 1080 6
原创 IOCP的几点细节
1) 即使ReadFile或者WriteFile函数返回真,完成包还是会从GetQueuedCompletionStatus取得。2) 与完成端口句柄绑定的套接字,其设置超时选项虽然可以成功,却是无效的。因为其相当于非阻塞模式,超时只是对阻塞模式而言的。3) 一旦相关的套接字操作发生网络错误,GetQueuedCompletionStatus会返回假。通过GetQueuedCompleti
2011-11-16 18:36:07 1344
原创 Thunk for MS Window
先讲一个Windows窗口的问题。众所周知,Windows窗口API要求注册窗口,RegisterClass和CreateWindow函数注册和建立窗口,要在注册的时候填充WNDCLASSEX结构,写入自己实现的窗口消息处理函数,这个处理函数的原型:LRESULT CALLBAC
2011-09-30 00:40:26 750 1
原创 volatile的单纯语义
以前我一直认为C的volatile具有一些“平台相关”的语义,比如,与并发访问相关的栅栏。看来只有C#的volatile才有那样的语义。MS实现的C编译器连volatile操作的位置也不再保证,而是保有为了优化可以调动其位置的权利。像下面这样的代码(VS2010 VC10编译
2011-09-24 00:19:31 950 2
原创 Mingw下gcc4.5.0编译新版ffmpeg的问题
<br />下载了今年8月份的ffmpeg的源码后,在Mingw下编译。ffmpeg警告gcc版本过老,造成栈不对齐,可能存在问题。建议用gcc4.2以上版本。于是下载了最近的稳定版gcc4.5.0进行编译。然而编译不过,出现错误:strcasecmp声明不确切。<br />在头文件中定义(libavutil/avstring.h) #define strcasecmp stricmp<br />问题依旧。<br />于是自己实现了两个函数。<br />static inline char
2010-08-12 18:09:00 1025 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人