第一、四个用途
用途一:
定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如:
char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针,
// 和一个字符变量;
以下则可行:
typedef char* PCHAR; // 一般用大写
PCHAR pa, pb; // 可行,同时声明了两个指向字符变量的指针
虽然:...
分类:
编程语言 时间:
2016-07-13 17:18:56
阅读次数:
313
1.1 LIST_CONCAT 该宏的作用非常简单,将s1,s2拼接在一起。其中,##起连接作用,编译器在预处理时负责将s1,s2连接在一起。比如hello_##world经过编译器预处理后就变成了hello_world了。 1.2 LIST 经过宏替换后,变为 该宏用于申明一个链表。可以将name ...
分类:
其他好文 时间:
2016-07-05 10:00:57
阅读次数:
223
http://www.cnblogs.com/charley_yang/archive/2010/12/15/1907384.html 第一、四个用途 用途一: 定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如:char* pa, pb; // 这多数不符合我们的意图 ...
分类:
编程语言 时间:
2016-06-21 10:38:17
阅读次数:
160
1.typedef的用途1)定义一种类型的别名注意typedef并不是简单的宏替换,如下例所示: 再看以下示例: 可以看出,typedef char* PCHAR;之后,PCHAR是char*类型的别名,PCHAR pa,pb;将pa,pb都定义成char*类型。 2)定义struct结构体别名我们 ...
分类:
编程语言 时间:
2016-06-16 19:52:15
阅读次数:
195
第一、四个用途 用途一: 定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如:char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针, // 和一个字符变量;以下则可行:typedef char* PCHAR; // 一般用大写PCH ...
分类:
其他好文 时间:
2016-06-07 01:04:22
阅读次数:
166
#和##在宏替换中的作用 摘自:http://blog.csdn.net/kingkai620/article/details/5905606 文/kingkaihttp://blog.csdn.net/haoel/archive/2009/05/18/4197010.aspx,其中的PUZZLE ...
分类:
其他好文 时间:
2016-05-14 20:04:17
阅读次数:
143
源代码1:
public class Java15 {
public static void main(String[] args) {
String s1="疯狂java";
String s2="疯狂"+"java";
System.out.println(s1==s2);
String str1="疯狂";...
分类:
其他好文 时间:
2016-05-12 20:22:05
阅读次数:
146
C预处理器处理程序的源代码,在编译器之前运行,通常以"#"开头。 C语言的预处理主要有三个言而的内容: 1) 宏定义和宏替换; 2) 文件包含; 3) 条件编译。 1. 宏定义和宏替换 "宏"是借用汇编语言中的概念,为的是在C语言程序中方便的作一些定义和扩展。这些语句以#define开头,分为两种: ...
分类:
编程语言 时间:
2016-05-03 00:15:59
阅读次数:
185
一、得到一个可执行程序 1. 预处理、编译、链接 gcc hello.c -o hello.exegcc编译源代码生成最终可执行的二进制程序,GCC后台隐含执行了四个阶段步骤。预处理 => 编译 => 汇编 => 链接预处理:编译器将C源代码中包含的头文件编译进来和执行宏替换等工作。gcc -E h ...
分类:
系统相关 时间:
2016-04-10 16:14:28
阅读次数:
241
《Linux内核分析》 一、可执行程序是怎么得来的? 编译器预处理(负责把include的文件包含进来及宏替换等工作);编译成汇编代码;编译器编译成目标代码;再链接成可执行文件;操作系统加载到内存中来执行 hello.o和hello文件都是ELF格式的 二、目标文件的格式(ELF可执行可链接) AB ...
分类:
系统相关 时间:
2016-04-09 13:42:49
阅读次数:
193