摘要:路由器的链路状态的信息称为链路状态,包括:接口的IP地址和子网掩码、网络类型(如以太网链路或串行点对点链路)、该链路的开销、该链路上的所有的相邻路由器. 在WAN中,客户端通过点对点链路(point to point link)连接到电信运营商网络。点对点链路也称为租用线路。 点对点链路不使用ARP
阅读全文
摘要:用可变参数宏(variadic macros)传递可变参数表你可能很熟悉在函数中使用可变参数表,如: void printf(const char* format, …); 直到最近,可变参数表还是只能应用在真正的函数中,不能使用在宏中。 C99编译器标准终于改变了这种局面,它允许你可以定义可变参数
阅读全文
摘要:函数的参数如果是一个父结构的指针, 这个结构包含在另一个子结构中, 然后定义调用函数 调用 输出:c 完整代码
阅读全文
摘要:首先,函数的作用域和访问权限基本可以参考 C语言中的作用域,链接属性和存储类型 也存在例外情况,比如内联函数 static inline,使用static 修饰 inline之后外部文件也可以访问内联函数. 然后,在.h和.c文件中,由于函数的声明和定义是分开的: 比如.h中是 .c中 所以在.h和
阅读全文
摘要:一般来说加上static表示函数是文件作用域,有的时候单独使用inline编译器会优化,没有编译成内联函数,而是变成普通函数编译,所以必须在前面加上static,放在头文件中可以被外部文件访问. 关于头文件中的 static inline函数 头文件中常见static inline函数,于是思考有可
阅读全文
摘要:如果你有多年C语言编程经验的话,相信对C语言的命名冲突应该不陌生。本文结合个人一些经验讨论一下命名冲突的问题。 首先讲一下命名冲突的由来。C语言中所有的符号名称都定义在一个全局命名空间中。这样符号名称,中间文件名称(.o文件或者.obj文件)都可能会冲突。 根据我的经验,如下情况下容易产生C语言命名
阅读全文
摘要:路由器的作用一般就是网段的切割,使用ip地址进行寻址. 交换机的作用一般就是把多个主机或者路由器或交换机集合在一起,进行数据帧的转发,使用mac地址寻址. 所以路由器一般用于寻路,交换机一般用于快速转发. 一般网络结构是internet->防火墙->路由器(广域网ip切换局域网ip)->交换机(多个
阅读全文
摘要:1.链接动态库.so和静态库.a settings->compiler->linker settings->add 2.编译报错ld return 1 exit status 一般来说是链接的库没有找到报的错,请检查库是否都链接到程序中
阅读全文
摘要:一.使用apt-get installl 方法安装的库或者程序一般的路径如下 1.下载的软件存放位置 /var/cache/apt/archives 2.安装后软件默认位置 /usr/share 3.可执行文件位置 /usr/bin 4.配置文件位置 /etc 5.lib文件位置(全局的lib路径)
阅读全文
摘要:一:MAC地址表详解 说到MAC地址表,就不得不说一下交换机的工作原理了,因为交换机是根据MAC地址表转发数据帧的。在交换机中有一张记录着局域网主机MAC地址与交换机接口的对应关系的表,交换机就是根据这张表负责将数据帧传输到指定的主机上的。 交换机的工作原理 交换机在接收到数据帧以后,首先、会记录数
阅读全文
摘要:int select(int n, fd_set *rd_fds, fd_set *wr_fds, fd_set *ex_fds, struct timeval *timeout); select用到了fd_set结构,此处有一个FD_SETSIZE决定fd_set的容量,FD_SETSIZE默认1
阅读全文
摘要:#include <winsock.h> 使用gethostbyname的函数的时候,会显示无法解析的外部符号. 主要问题是因为没有引用WS2_32的lib库 在include上面引用就行了 #pragma comment(lib, "WS2_32")
阅读全文
摘要:作用域 当变量在程序的某个部分被声明的时候,他只有在程序的一定渔区才能被访问,编译器可以确认4种不同类型的作用域:文件作用域,函数作用域,代码块作用域和原型作用域 1.代码块作用域:位于一对花括号之间的所有语句称为一个代码块.任何在代码块的开始位置声明的标识符都具有代码块作用域,表示他可以被这个代码
阅读全文
摘要:有的时候,在使用二级指针和指针的时候会有一些困惑,在这里总结一下. 概念就不多说了,直接进入正题. 结合代码讨论二级指针的问题. 1:void test(int a,int b){ int t; t = a; a = b; b = t; } int main(){ int a=10,b=15; te
阅读全文