typeof在linux中妙用
来源:互联网 发布:淘宝上有哪些网购美食 编辑:程序博客网 时间:2024/05/02 04:41
今天偶然又看到了typeof这个东西,只知道它大概是返回变量的类型,后来上网查了下发现这个关键字在linux中用的非常多, 这里大概叙述了 typeof是一个什么东西,怎么用,实际上可以用简单的话来重述。如果你对sizeof很熟悉的话,那么大可进行类推,sizeof(exp.)返回的 是exp.的数据类型大小,那么typeof(exp.)返回的就是exp.的数据类型。值得注意的是在上面的话里我们可以看到,如果编译选项中指定了使 用标准C,那么gcc的扩展使用可能会受到影响,不过在gcc编译条件下使用__typeof__依然可以正常工作,这和使用asm是一样的。当然如果是 在其他的编译器条件下,这样做也不行了,只能自定义一个macro去使用,也就是说跟gcc没啥关系了,你愿意把typeof咋实现都可以。
下面写一个小程序示例一下:)
#include
typedef struct
{
int x;
char y;
}astruct, * pastrcut;
int main()
{
int sizem, sizew;
int x = 3;
typeof(&x) m;
sizem = sizeof(m);
*m = 5;
typeof(((astruct *)5)->y) w;
sizew = sizeof(w);
w = ''a'';
return 1;
}
首先看main函数里的m变量,这个变量的类型就是typeof(&x), 由于x是int型的(这里与x是否被赋值一点关系都没有)所以&x应该是int *类型,那么typeof(&x)返回的类型就是int*,所以m自然也就是个int*类型的。之后我们看w变量,其类型是 typeof(((astruct *)8)->y), 其中astruct是一个被定义的结构类型,其中的y元素是char*类型,那么((astruct *)8)->y是啥意思呢?在这里0并不是真正的变量,可以把它理解为一个替代使用的符号当然这个符号最好是一个数,其意思更可以理解为一个被赋值 了的变量,这个数可以不是0,3也可以8也可以,随便什么都可以。那么((astruct *)0)->y仅仅就是表示了y这个变量,所以typeof的结果就是y元素的类型,也就是char。
转自:http://m.blog.chinaunix.net/uid-24227137-id-3522785.html#modile.qq.com
- typeof在linux中妙用
- typeof在linux中妙用
- typeof在linux中妙用
- typeof在linux中妙用
- 在JavaScript中typeof的用途介绍
- linux内核中typeof的使用说明
- Neoshine linux 中 << 的妙用;
- Linux typeof
- C语言在linux内核中do while(0)妙用之法
- 鼠标中键在Firefox中的妙用
- 双击在Office Excel中妙用
- 在c++中“/”和“%”的妙用
- 在selenium Webdriver中妙用JS
- 简单介绍Linux中C语言妙用
- Linux中内核参数reboot的妙用
- linux系统中.bashrc的妙用
- Linux中maps/smaps的妙用
- h5 面试题 在js中typeof返回结果有几种?
- ubuntu下 字体安装记录
- 用java创建一个简单的服务器
- 如何更改背景图片透明度
- 如何在Eclipse和Android Studio中使用xUtils3(一)
- 几道经典的有关整数二进制的编程题(如:一个数二进制位的偶数位和奇数位交换)
- typeof在linux中妙用
- TOJ 3777Function Problems 三分法的应用
- 表单代码和PHP代码写到同一个文件中
- C++ 友元
- 关于web中application的配置文件
- dos界面命令和window系统常用快捷键
- 贝叶斯定理
- 内心独白
- Servlet线程安全问题