C标准预定义宏
ANSI C标准中有几个标准预定义宏:__FILE__ __DATE__ __TIME___ __LINE__ 等
__LINE__:在源代码中插入当前源代码行号;
__FILE__:在源文件中插入当前源文件名;
__DATE__:在源文件中插入当前的编译日期
__TIME__:在源文件中插入当前编译时间;
__STDC__:当要求程序严格遵循ANSI C标准时该标识被赋值为1;
__cplusplus:当编写C++程序时该标识符被定义。
这几个宏比较有用~~~~~~~~
在调试程序时或编译时,__LINE__比较有用,可以用来打印逻辑错误的行号~~~~~~~,例子:
switch(x)
{
case 1:
....;
break;
case 2:
.....;
break;
default:
printf("logic erro line number%d!\n",__LINE__);
break;
}
又如利用__DATE__和__TIME__可以插入编译时间。
代码:
void print_version_info(void)
{
printf("Date Compiled:%s\n",__DATE__);
printf("TimeCompiled:%s\n",__TIME__);
}
输出格式为:mm dd yy 和 hh:mm:ss
作用:对于__FILE__,__LINE__,__func__这样的宏,在调试程序时是很有用的,因为你可以很容易的知道程序运行到了哪个文件的那一
行,是哪个函数。
下面一个例子是打印上面这些预定义的宏的。
__DATE__,__FILE__,__LINE__,__TIME__,__FUNCTION__
C标准中
相关文档:
在此摘录C编译时出现的警告信息的意义。
1) warning: ISO C90 forbids mixed declarations and code
C语言是面向过程的语言,这个警告通常表示声明应该在其他代码的前面。
2) warning: initialization from incompatible pointer type
在Linux kernel中有许多callback函数,这个警告表明callback函数的实现中,或者返 ......
最近做的一些工作需要用到线程池技术,因此参考了一些资料和书籍,如《0bug c/c++商用工程之道》。
为此在linux平台上用纯c写了一个线程池的实现。
在此列出了原代码。
主要用到的数据结构有
1.struct thread_pool_t // thread pool 的实现代码
2.struct thread_pool_token_t &nb ......
实在无聊中就将原来的一些东西整理了一下,自己是个记性不好的人,隔断时间整理自己,同时也希望可以方便他人。
----------------------------------------------------------------------------------------------------------------------------------------
/**//*************************************************** ......
#i nclude <stdio.h>
#i nclude <dos.h>
#i nclude <conio.h>
#i nclude <graphics.h>
#i nclude <stdlib.h>
#ifdef __cplusplus
#define __CPPARGS ...
#else
#define __CPPARGS
#endif
#define MINBOXSIZE ......