C/C++
ligt0610
这个作者很懒,什么都没留下…
展开
-
void在C/C++中的两种不同含义
在wrlinux3.0环境下编译项目代码,报出大量的'' has incomplete type,invalid use of 'VOS_VOID'的错误,经分析大致原因如下: void作为一个C/C++关键字,有两层含义。第一层含义就是大家熟知的,作为一种“不是类型”的类型。它还有另一层含义,就是写在函数的参数表里面,表示这个函数不接受任何参数。后一种含义其实是从C语言中继承而来,原创 2012-07-14 13:39:43 · 3699 阅读 · 0 评论 -
参数不确定的宏定义
在很多项目中,不管是记录日志还是打印错误信息到标准(错误)输出,为了能尽快定位到代码所在位置,可能需要记录或者打印代码所在文件和行数等信息。当然我们可以这样做:printf("%s(%s:%d): %s\n",__FILE__, __FUNCTION__, __LINE__, err_msg);或者fprintf(fp, "%s(%s:%d): %s\n", __FILE__, _原创 2012-08-04 14:13:05 · 1388 阅读 · 0 评论 -
宏定义中的#、##和#@符号
1、# 字符串化操作符 其作用是:将宏定义中的传入参数名转换成用一对双引号括起来的参数名字符串。 其只能用于有传入参数的宏定义中,且必须置于宏定义体中的参数名前。 如: #define TEST_MACRO1(para) printf("Welcome to the C world, %s!\n", #para) 当使用该宏定义时:原创 2012-08-04 13:50:07 · 1039 阅读 · 0 评论 -
C++ IPv4与IPv6的兼容编码
这里不再对IPv6 socket相关编程的基础知识进行讲解,只提供一个IP协议无关的服务端和客户端的代码,仅供参考。服务端代码:#include #include #include #include #include #include #include #include using namespace std;int tcp_listen(const char *ho原创 2014-01-22 17:53:57 · 11141 阅读 · 3 评论