我怀疑宏,当我们创建如下
#define DATA 40
哪里可以创建DATA?我还需要知道尺寸和数据的类型吗?
在java中,我们创建宏以及数据类型
那么宏功能呢?它们都是内联函数?
答案 0 :(得分:3)
宏本质上是文本替换。
DATA
在预处理阶段之后不存在。编译器永远不会看到它。由于没有创建变量,我们无法谈论其数据类型,大小或地址。
答案 1 :(得分:2)
宏按字面意思粘贴到代码中。它们不是“解析”,而是扩展。编译器看不到DATA
,而是40
。这就是为什么你必须小心,因为宏不像普通的函数或变量。请参阅gcc's documentation。
宏是代号的片段,它已被赋予名称。每当 使用该名称,它将被宏的内容替换。那里 是两种宏。它们的大部分区别在于它们的外观 当他们被使用。类似对象的宏类似于数据对象 used,类似函数的宏类似于函数调用。
您可以将任何有效的标识符定义为宏,即使它是C 关键词。预处理器对关键字一无所知。这个 如果你想隐藏一个关键字,如const,可能会很有用 较旧的编译器,不理解它。但是,预处理器 operator defined(参见Defined)永远不能定义为宏,而且 C ++的命名运算符(参见C ++命名运算符)不能是宏 你正在编译C ++。
答案 2 :(得分:0)
宏。它们仅在您的源代码中出现。在编译的pre-processing
阶段处理.macro。您可以找到有关宏here的更多信息
答案 3 :(得分:0)
#define之类的预处理程序指令在编译的预处理阶段被替换为相应的文本,并且(几乎)从未在最终的可执行文件中表示。