A. C语言中对于变量要分配内存,那么对于宏定义,常量等要吗如果不要它们是存放在哪里的
常量在常量区,也就是堆中,属于进程空间
B. c语言多个文件都用到同一个宏和结构,那么宏定义和结构定义应该放在哪个文件合适呢
宏定义又称为宏替换,c语言中的宏定义只是简单的字符串替换而已。
比如
define
n
1000
在程序中遇到n就自动把n替换成1000,n不是一个变量,不能赋值。
如果你写n=1;
相当于写1000=1;
这编译是通不过的,所以你使n的值改变是做不到的。
n只是一个要被替换的记号而已,连变量也不是。
C. c语言宏定义的 错误返回值 如何保存到数组buf[100]中
程序代码: #include <stdio.h> #include <string.h> //包含memset函数 #include <stdlib.h> //包含double atof(const char *nptr); #define MAX_LEN 260 #ifndef _MSC_VER #define bool int #d
D. C语言中的宏是否会分配会分配存储空间O(∩_∩)O谢谢
呃,不会.也去不出地址.
宏是"预处理",意思就是说,在编译之前,宏已经不存在了...
比如 #define COUNT (10)
int a = COUNT;
可以这么说,其实在编译的时候,编译器看到的是int a = 10;
E. 单片机用C语言编写的程序说定义的数据都存放在哪了 向下面的一段定义的“U" 和“r”
num 放RAM中;
table[]放在ROM中
u,r 就是代表unsigned int,unsigned char意思,不占空间
F. c语言编译生成的.obj文件解释下
c语言编译生成的.obj文件是一种文本文件,程序编译时生成的中间代码文件目标文件,一般是程序编译后的二进制文件,再通过链接器和资源文件链接就成可执行文件了。OBJ只给出了程序的相对地址,而可执行文件是绝对地址。
obj文件基本结构:OBJ文件不需要任何种文件头(File Header),尽管经常使用几行文件信息的注释作为文件的开头。
OBJ文件由一行行文本组成,注释行以符号“#”为开头,空格和空行可以随意加到文件中以增加文件的可读性。有字的行都由一两个标记字母也就是关键字(Keyword)开头,关键字可以说明这一行是什么样的数据。
(6)c语言宏编译后的存放扩展阅读:
C编译的整个过程很复杂,大致可以分为以下阶段:
1、预处理阶段
在该阶段主要完成对源代码的预处理工作,主要包括对宏定义指令,头文件包含指令,预定义指令和特殊字符的处理,如对宏定义的替换以及文件头中所包含的文件中预定义代码的替换等,总之这步主要完成一些替换工作,输出是同源文件含义相同但内容不同的文件。
2、编译、优化阶段
编译就是将第一阶段处理得到的文件通过词法语法分析等转换为汇编语言。优化包括对中间代码的优化,如删除公共表达式,循环优化等;和对目标代码的生成进行的优化,如如何充分利用机器的寄存器存放有关变量的值,以减少内存访问次数。
3、汇编阶段
将汇编语言翻译成机器指令。