【发布时间】:2021-06-03 09:53:33
【问题描述】:
想问有什么区别:
#define STR 'a'
和
#define STR "a"
我认为不同之处在于第一个作为单个char 传递,第二个作为char* 传递并且是一个双字符数组,例如:['a','\0']。
【问题讨论】:
-
这两个宏定义实际上都不正确,因为您没有为宏命名。什么都没有通过,预处理器是一种相对简单的搜索替换类型的东西,只处理文本。
-
没有区别,都是无效的。
-
#define对 C 类型一无所知。这是一个文本替换工具。如果您想知道'a'和"a"之间的区别,那么是的,一个是一个字符,另一个是一个2 字符数组,但#define不在乎。 -
它们都不是
char*。'a'是char,"a"是char[2]。尽管如果"a"在大多数表达式中使用,它将被替换为指向其第一个元素的char*。 -
'a'和"a"之间的区别可以通过任何初学者学习材料来解决。在这种情况下,他们坐在#define后面是无关紧要的。
标签: c macros c-preprocessor