C语言
文章平均质量分 80
国境之南Fantasy
Coder
展开
-
ifconf和ifreq
用ioctl获得本地ip地址时要用到两个结构体ifconf和ifreq,它们对于大多数人来说都是比较陌生的,这里给一种比较简单的理解方法,仅供参考.首先先认识一下ifconf和ifreq://ifconf通常是用来保存所有接口信息的//ifreq用来保存某个接口的信息转载 2011-10-11 16:25:22 · 719 阅读 · 0 评论 -
嵌入式Linux编译器gcc使用
from: http://blog.csdn.net/jyjmc/article/details/5278130At first, GCC is used for GNU C Compiler. At present,it supports JAVA Ada C++ and so on. GCC编译流程分为:1.Pre-Processing(预处理) gcc -E转载 2012-07-30 17:54:03 · 1742 阅读 · 0 评论 -
结构体对齐问题
在结构中,编译器为结构的每个成员按其自然对界(alignment)条件分配空间;各个成员按照它们被声明的顺序在内存中顺序存储,第一个成员的地址和整个结构的地址相同。在缺省情况下,C编译器为每一个变量或是数据单元按其自然对界条件分配空间。 例如,下面的结构各成员空间分配情况。 struct test { char x1; short x2; floa转载 2012-08-28 15:51:13 · 796 阅读 · 0 评论 -
__attribute__机制介绍
from: http://blog.csdn.net/sunboy_2050/article/details/65667391. __attribute__GNU C的一大特色(却不被初学者所知)就是__attribute__机制。__attribute__可以设置函数属性(Function Attribute)、变量属性(Variable Attribute)和类型属性(Ty转载 2012-08-28 15:55:05 · 573 阅读 · 0 评论 -
struct union 内存分配
from: http://blog.csdn.net/owldestiny/article/details/5700774结构体和共用体的内存分配是C语言的一个难点,也是面试题中的热点。示例1: Union data1{ double d; int i; char c1; char c2[转载 2012-08-28 15:25:46 · 894 阅读 · 0 评论 -
12个有趣的C语言面试题
1.gets()函数问:请找出下面代码里的问题:#include int main(void) { char buff[10]; memset(buff,0,sizeof(buff)); gets(buff); printf("\n The buffer entered is [%s]\n",buff); return 0; } 答转载 2012-09-08 22:47:46 · 789 阅读 · 0 评论 -
Linux下利用backtrace追踪函数调用堆栈以及定位段错误
来源:Linux社区 作者:astrotycoon一般察看函数运行时堆栈的方法是使用GDB(bt命令)之类的外部调试器,但是,有些时候为了分析程序的BUG,(主要针对长时间运行程序的分析),在程序出错时打印出函数的调用堆栈是非常有用的。在glibc头文件"execinfo.h"中声明了三个函数用于获取当前线程的函数调用堆栈。int backtrace(void **buff转载 2015-04-09 13:27:04 · 1863 阅读 · 0 评论 -
struct 字节对齐详解
一.什么是字节对齐,为什么要对齐? 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特 定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型转载 2015-11-18 11:42:44 · 1928 阅读 · 0 评论 -
What are the meaning of the items in the “alignment trap” error message?
During my debugging, I got the following error message.Alignment trap: my_main (29858) PC=0x00170ad8 Instr=0xe5960008 Address=0x00f28daa FSR 0x0f3I've looked around a bit and found a lot转载 2015-11-18 17:08:54 · 738 阅读 · 0 评论 -
malloc 原理 实现机制 vs free 原理 实现机制
malloc原型:extern void *malloc(unsigned int num_bytes);用法:#include 或#include功能:分配长度为num_bytes字节的内存块说明:如果分配成功则返回指向被分配内存的指针,否则返回空指针NULL。当内存不再使用时,应使用free()函数将内存块释放。malloc的语法是:指针名=(数据类型*)m转载 2016-10-01 19:56:55 · 2040 阅读 · 0 评论 -
C语言的标准
from: http://blog.csdn.net/gogor/article/details/45626601.ANSI/ISO C ANSI C是C语言的标准,任何C语言的编译器都在ANSI C的基础上扩充。1990年,国际化标准组织ISO(Intrernational StandardOrganization)接受了ANSI C(C89)为ISO转载 2012-07-27 13:41:13 · 876 阅读 · 0 评论 -
linux的内建函数
转自: http://blog.sina.com.cn/s/blog_4b8ad9530100cl2v.html内建函数是与语言相关的(或者更准确地说是编译器相关吧),作用应该是跟关键字一样,无需申明,编译器就知道它是什么东西。同样,无需#include任何头文件,只要语法符合,编译器就知道去哪儿链接相关代码!另外,如果显式申明的函数与内建函数同名,内建函数将会转载 2012-07-27 11:37:33 · 1499 阅读 · 0 评论 -
__FILE__,__LINE__,FUNCTION__实现代码跟踪调试(linux下c语言编程 )
先看下简单的初始代码:注意其编译运行后的结果。root@xuanfei-desktop:~/cpropram/2# cat global.h //头文件#ifndef CLOBAL_H #define GLOBAL_H #inclu转载 2011-10-10 14:51:00 · 719 阅读 · 0 评论 -
C 打印格式小记
d,lx,ld,,lu,这几个都是输出32位的hd,hx,hu,这几个都是输出16位数据的,hhd,hhx,hhu,这几个都是输出8位的,lld,ll,llu,llx,这几个都是输出64位的,printf( "%llu ",.....)%llu 是64位无符号%llx才是64位16进制数 Dev-C++下基本数据类型学习小结环境: Dev-C++ 4.9转载 2011-12-16 14:36:36 · 2023 阅读 · 0 评论 -
list_entry 解析
list_entry的宏定义:#define list_entry(ptr, type, member) \ ((type *)((char *)(ptr)-(unsigned long)(&((type *)0)->member))) 这个倒是不难理解:从一个结构的成员指针找到其容器的指针。但是正因为如此,我的第一感觉是,这个宏的名字应该更加抽象,名字似乎应该改称叫“寻找转载 2012-02-28 11:16:01 · 632 阅读 · 0 评论 -
为什么使用双重指针
一般情况下我们不使用指向指针的指针,因为这带来了操作的复杂性。但有些情况下我们不得不用。当指针作为一个函数的参数输出时,它的作用就显示出来了。例如:设计一个函数:void fun1(char sz[], char search, char * pa)要求:这个函数参数中的数组array是以0值为结束的字符串,要求在字符串sz中查找字符是参数search里的字符。如果找到,函数通过第三个参数转载 2012-03-01 14:19:47 · 4026 阅读 · 0 评论 -
关于位结构体和union的一些介绍
/*************以下文字摘自《C语言编程宝典》********************/位结构是一种特殊的结构, 在需按位访问一个字节或字的多个位时, 位结构 比按位运算符更加方便。 位结构定义的一般形式为: struct位结构名{ 数据类型 变量名: 整型常数; 数据类型 变量名: 整型常数;转载 2012-03-05 22:17:55 · 882 阅读 · 0 评论 -
可变参数(...)学习笔记
http://topic.csdn.net/t/20041124/09/3582660.html原文链接 最近应CSDN的邀请,C/C++值班室的几位兄弟为C++电子杂志写了一些文章,现将我的稿件预先刊发在论坛上,请兄弟们批评指正。也欢迎大家为CSDN c/c++电子杂志专刊投稿。杂志详情请见http://emag.csdn.net/转载 2012-03-26 13:38:31 · 562 阅读 · 0 评论 -
数组名和数组名取地址的区别
from:http://blog.csdn.net/daniel_ice/article/details/6857019以下代码会打印出什么样的日志呢?[cpp] view plaincopy#include int a[2] = {1,2}; int main(){ pri转载 2012-06-20 15:25:41 · 1202 阅读 · 0 评论 -
数组与指针---都是"退化"惹的祸
个人的浅显认识, 欢迎批评指正.1. 什么是数组类型?下面是C99中原话:An array type describes a contiguously allocated nonempty set of objects with aparticular member object type, called the element type.36) Array types a转载 2012-06-20 15:59:20 · 1321 阅读 · 0 评论 -
C语言函数原型的重要性
from: http://xanpeng.github.com/programming/2012/07/11/func-prototype-c.html本文涉及:1. 隐式声明的危害.2. gcc的built-in函数.这里说的函数原型是function prototype, 也就是函数声明, 是程序告诉gcc函数样貌的一种方式.转载 2012-07-27 11:26:58 · 2398 阅读 · 0 评论 -
浅谈 C++ 中的 new/delete 和 new[]/delete[]
在 C++ 中,你也许经常使用 new 和 delete 来动态申请和释放内存,但你可曾想过以下问题呢?new 和 delete 是函数吗?new [] 和 delete [] 又是什么?什么时候用它们?你知道 operator new 和 operator delete 吗?为什么 new [] 出来的数组有时可以用 delete 释放有时又不行?…如果你对这些问题都有疑问的话,转载 2016-10-01 20:15:42 · 300 阅读 · 0 评论