社区
C语言
帖子详情
关于这么使用#define的依据?
lostlander
2007-03-01 08:43:40
int main()
{
#define name "username"
printf("%c",name[0]);
return 0;
}
name在编译的时候被处理成"username", 也就是指向这个字符串的指针?
那么在这里, 这个过程在编译的时候是如何处理的?
能否提供相关具体的关于C编译器的参考资料?
...全文
451
12
打赏
收藏
关于这么使用#define的依据?
int main() { #define name "username" printf("%c",name[0]); return 0; } name在编译的时候被处理成"username", 也就是指向这个字符串的指针? 那么在这里, 这个过程在编译的时候是如何处理的? 能否提供相关具体的关于C编译器的参考资料?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
redstorm_fyy
2007-03-16
打赏
举报
回复
"username"[0];
罕见的语法啊
Cnwanglin
2007-03-16
打赏
举报
回复
服了
aimbin
2007-03-15
打赏
举报
回复
编译之前有预处理过程,直接替换掉了
Mobidogs
2007-03-15
打赏
举报
回复
楼上,讲的够清楚了.
chensanniang
2007-03-12
打赏
举报
回复
很明显会输出u,字符串常量也可以相当于指向本身首地址的指针.同意jixingzhong(瞌睡虫·星辰)的观点.
Jokar
2007-03-12
打赏
举报
回复
预编译期由预处理器替换的
jixingzhong
2007-03-12
打赏
举报
回复
printf("%c","username"[0]);
"username" 它其实是一个指向 "username" 这个字符串的首地址指针,
那么 "username"[0] 就是 .....
todototry
2007-03-12
打赏
举报
回复
int main()
{
#define name "username"
printf("%c",name[0]);
return 0;
}
============
“username”是文本字符串常量,类型是个常量字符数组,而数组可当成个常量指针使用
所以相当于字符数组的首字符
mLee79
2007-03-12
打赏
举报
回复
ls 看题不仔细, 题目显然是对的 ...
编译器看不到 #define , 预处理器已经把它处理成了 printf("%c","username"[0]); 鸟 ...
ka_ng
2007-03-12
打赏
举报
回复
编译器首先扫描语法有无错误。你#define name "username"后,它处理printf("%c",name[0]);语句时直接当做printf("%c","username"[0]);处理,这样显然有语法错误啦。
printf("%c",name);就行了
lostlander
2007-03-01
打赏
举报
回复
编译器如何处理的? 能否说说具体过程.
还有就是相关资料.
thx
fosjos
2007-03-01
打赏
举报
回复
直接替换:
printf("%c","username"[0]);
172集通俗易懂的C语言从入门到项目实战教程
组指针、函数指针、回调函数)、调试技巧、程序环境和预处理(翻译环境、运行环境、预定义符号、#
define
和#undef、宏和函 数、条件编译、文件包含)、 数据在内存中的存储、内存块分配、static、字符函数和字符串函数、...
C++中#
define
用法
#
define
是C语言中提供的宏定义命令,其主要目的是为程序员在编程时提供一定的方便,并能在一定程度上提高程序的运行效率,但学生在学习时往往不能理解该命令的本质,总是在此处产生一些困惑,在编程时误用该命令,使得程序的运行与预期的目的不一致,或者在读别人写的程序时,把运行结果理解错误,这对C语言的学习很不利。 1 #
define
命令剖析 1.1 #
define
的概念 #
define
命令是C语言
C++中宏定义#
define
的用法
#
define
是C语言中提供的宏定义命令,其主要目的是为程序员在编程时提供一定的方便,并能在一定程度上提高程序的运行效率,但大家在学习时往往不能理解该命令的本质,总是在此处产生一些困惑,在编程时误用该命令,使得程序的运行与预期的目的不一致,或者在读别人写的程序时,把运行结果理解错误,这对 C语言的学习很不利。 一、#
define
命令剖析 (1) #
define
的概念 #
define
命令是C语...
深入理解#
define
预处理,预处理器运算符# ## #@
【写在前面】 C/C++ 中
使用
#
define
的地方似乎越来越少。 最开始刚接触的时候,常常被告诉,#
define
只是普通的文本替换,一般用来定义一些常量。 后来又学习到,
使用
const 代替 #
define
来定义真正的常量。 随着经验的积累,#
define
现在更多的用来做一些代码的预处理工作和小函数定义。 然而,宏远没有想象的那么简单。 本篇主要内容: 1、预处理操作符中的 # ## #@ \。 2、预处理器展开规则。 3、递归
使用
宏。 【缘起】 工作里一个偶然的机会,.
C语言之#
define
(宏定义命令)
宏定义又称为宏替换、宏代换,简称“宏”,是C提供的三种预处理功能的其中一种。其主要目的是为程序员在编程时提供一定的方便,并能在一定程度上提高程序的运行效率。#
define
命令是C语言中的一个宏定义命令,它用来讲一个标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本。该命令有两种格式:一种是简单的宏定义(不带参数的宏定义),另一种是带参数的宏定义。
C语言
69,373
社区成员
243,080
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章