社区
C语言
帖子详情
c/c++语言能实现则个功能么?
duqiang2050
2003-05-27 03:19:22
输入的一个字符窜
如果等于“abcd”程序里就定义个叫“abcd”的变量,等于别的就定义一个别的变量
...全文
31
23
打赏
收藏
c/c++语言能实现则个功能么?
输入的一个字符窜 如果等于“abcd”程序里就定义个叫“abcd”的变量,等于别的就定义一个别的变量
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
23 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xiaoyunet
2003-05-27
打赏
举报
回复
再to:mouseleeky(守夜人),我修改一下你的程序,在后面再增加一个int _name = 45;的定义,瞧,出现编译错误了吧。
#include<iostream>
using namespace std;
#define LINK(ch) _##ch
void main()
{
char name[5];
cout<<"Please input the name of the variable:"<<endl;
for(int i=0;i<5;i++)
cin>>name[i];
int LINK(name)=5;
int _name = 45; //error, redefinition!
cout<<LINK(name)<<endl;
}
xiaoyunet
2003-05-27
打赏
举报
回复
to:mouseleeky(守夜人),你的程序生成的变量名是_name,可不是什么_abcd,##是在编译时期连接名字的,没有办法解决运行时的需求。
还有这段话:
其实由于输入的原因,运行期是被打断的。
在输入结束后,程序有可能根据输入内容动态地产生变量名。
而在程序中建立debug函数却不能有什么作用,这是因为运行期不会因为已经写好的硬代码有什么变化。多态可以认为是在运行时把对象的本象还给原来的对象。也并没有打断运行期。
看不懂,什么叫运行期时被打断的?
love_snoopy
2003-05-27
打赏
举报
回复
不知道摸板能不能实现这个目标
cenphoenix
2003-05-27
打赏
举报
回复
学习
Schlemiel
2003-05-27
打赏
举报
回复
用一个map,用你输入的字符串作为key,新建一个变量作为value,再把包装函数写写好就差不多行了。
mouseleeky
2003-05-27
打赏
举报
回复
其实由于输入的原因,运行期是被打断的。
在输入结束后,程序有可能根据输入内容动态地产生变量名。
而在程序中建立debug函数却不能有什么作用,这是因为运行期不会因为已经写好的硬代码有什么变化。多态可以认为是在运行时把对象的本象还给原来的对象。也并没有打断运行期。
idontlikenickname
2003-05-27
打赏
举报
回复
Mmm...
楼主的这个要求好像很特别啊?不过这个功能无论是在编译期(CompileTime)还是在运行期(RunTime)都是实现不了的.
假设能够实现那我们可以在程序中建立一个debug函数,再其中输入我们想要知道的任意一个变量的名字,然后打印出这个变量的值.那还要那么多debug工具干吗???!!!
mouseleeky
2003-05-27
打赏
举报
回复
不要一上来就说别人的方法行不通,我的程序中没有加任何一句注释说明我是在打印变量的名字,你怎么就想当然的这么认为了呢?
再有,我认为只要你是在贴出程序,那么就一定要是调试过的,否则是对别人的不负责任。我看到这个问题后,觉得自己在哪里遇到过类似的问题,我是非常认真的在vc6.0上调过才贴出来的。
mouseleeky
2003-05-27
打赏
举报
回复
我打印的显然不是变量名字,而是他的值,5。
另外,这个程序是刚刚在VC6.0下调试过的。
不信的人可以去调试。
xiaoyunet
2003-05-27
打赏
举报
回复
mouseleeky(守夜人) ,你的方法行不通,呵呵。没听说过cout能把变量的名字打出来的。
liu_feng_fly
2003-05-27
打赏
举报
回复
to 楼上,不要乱说,你的程序你自己测试过?
这是msdn上的例子,替换是发生在编译时期
#define paster( n ) printf( "token" #n " = %d", token##n )
int token9 = 9;
If a macro is called with a numeric argument like
paster( 9 );
the macro yields
printf( "token" "9" " = %d", token9 );
which becomes
printf( "token9 = %d", token9 );
lwbhero
2003-05-27
打赏
举报
回复
用c++编译器实现的让c++语言来实现有点越俎代庖之嫌
mouseleeky
2003-05-27
打赏
举报
回复
你可以试试这个程序
你可以输入一个字符串(不超过5个字母,当然这个数由你决定)。
比如你输入的是abcd
那么程序生成一个名字叫做_abcd的int变量。
#include<iostream.h>
#define LINK(ch) _##ch
void main()
{
char name[5];
cout<<"Please input the name of the variable:"<<endl;
for(int i=0;i<5;i++)
cin>>name[i];
int LINK(name)=5;
cout<<LINK(name)<<endl;
}
ybsoft
2003-05-27
打赏
举报
回复
楼主疯了
atto
2003-05-27
打赏
举报
回复
有趣,
虽然是个很菜的问题,
也不可否认很有创意呦:)
meimj
2003-05-27
打赏
举报
回复
好有创意的想法,楼主想干什么??
xingaolan
2003-05-27
打赏
举报
回复
up
reinhard_liu
2003-05-27
打赏
举报
回复
变量叫什么有关系吗?
ouyangdong
2003-05-27
打赏
举报
回复
好好努力,改写编译器,就能了。:)
pzytony
2003-05-27
打赏
举报
回复
这是两个不同的概念
变量名在程序中仅仅是个标识,其实表示变量的物理地址(在赋值后),
而字符串是确定的值,存在内存中。
两者不可混淆和混用!
谢谢
加载更多回复(3)
复数抽象数据类型C
语言
,采用C/
C++
语言
如何
实现
复数抽象数据类型Complex
采用C/
C++
语言
如何
实现
复数抽象数据类型Complex#include typedef struct Complex{double e1; // 实部double e2; // 虚部}COMPLEX;// 函数声明COMPLEX AssignComplex(double v1, double v2);void DestroyComplex...
计算机
语言
简介:C
语言
/
C++
语言
的历史、应用、学习路线与环境
计算机
语言
简介:C
语言
/
C++
语言
的历史、应用、学习路线与环境
学了C/
C++
,你可以从事哪些岗位?
20世纪80年代,AT&T Bell(贝尔)实验室的Bjarne Stroustrup博士...相对于C
语言
,
C++
语言
对C
语言
的
功能
做了一定的扩充,同时增添了面向对象编程机制。引入面向对象编程机制,主要是为了提高开发效率。 C/
C++
语言
C/
C++
头文件
C/
C++
语言
标准 c/
c++
语言
头文件列表 包括:ISO标准,POSIX标准 补充:每个头文件的基础
功能
文章目录C/
C++
语言
标准前言一、C/
C++
的标准二、使用步骤1.引入库2.读入数据总结学习内容:学习时间:学习产出: 前言 C/...
C++
语言
:C
语言
/
C++
语言
的简介、发展历史、应用领域、编程
语言
环境IDE安装、最强学习路线之详细攻略
C++
语言
:C
语言
/
C++
语言
的简介、发展...
C++
语言
实现
的算法案例集合 C
语言
/
C++
语言
的简介 1995年之前,江湖比较平静,编程
语言
有C、basics、pascal、 fortran、汇编
语言
,还有foxbase(曾经被列入
C语言
69,371
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章