64,647
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
int I;
char *S;
int main()
{
S = malloc(128);
scanf("%127[^\n]",S);
S[127]='\0';
I=S;
printf("%s\n%d\n",I,I);
I += 3;
printf("%s\n%d\n",I,I);
free(S);
return 0;
}
这段代码是安全的,但在C++中是不允许的,加显示转义符那又令当回事。这里解释一下句柄,对许多年轻人可能都不清楚这个概念,句柄就是用整数处理指针、地址的一种用法。我记得当初为这也争执过。然后我写了个测试码随手就贴了上去。
有关汇编无法命名变量,也来自于我当时手中的MASM2,微软的产品,整个里面除了可以call函数名外,只能对地址进行操作。我记得,当初你就是为这还曾经打过51cpu什么的官司,好像是单片机就是计算机之类,时间太久记不清了,那时我给单位做单板机开发,如果汇编能支持变量,我不会那么幸苦。当然,我从单位出来也近20年了,技术的发展常常令人嗔目结舌,这么多年没碰汇编了,也许汇编早已可以命名变量了。我94年后都是用TC++写内嵌式汇编的,主要就是解决变量命名问题。这算是我孤陋寡闻吧。
最初是什么时候开始打嘴仗的,是0几来着,那时老迈还在坛子里时做版主时,阿飞他们还在读书,瀛海威天空刚被北京在线收购不久,应该在03、04年前,记得那时的上网费用还挺高,而瀛海威天空还差我600点时却无处讨说法时,看到了CSDN,那时也几乎是半潜水状态,有时跟人抬抬杠、改改代码之类的。有天不知是英雄斯基还是谁,给我留言说有个人到C/C++水版说C++的坏话,我觉得有意思,因为delphi也是我接触的语言,与BC都是堡兰国际的产品,而且我最初的C环境还是用turbo pascal写的呢,如果不是朋友好心送了我一套TC++1.0,估计我都要拿那玩意做项目开发的。开始以为是某个大牛到C版砸场子,一问,就是DelphiGuy了。
最初一些贬低C++的话,那是观点问题,无伤大雅,虽然有争吵,我觉得年轻人言辞激烈些未必是坏事,有血性总比温吞水的好。也许看我温和,三角比较多吧,不知怎么的我就被点名骂成了钝胎,好像最初的交恶就是从这时候起的吧,当别人出脏字的时候,我好像没骂过你吧,即便你骂钝胎,我也只是说自然界里的东西天生都是钝的圆润的吧,以此来反驳你称你为锐胎的,不是吗?也许这话有些阴损了些,之后好像有2、3年没来C版吧,这之后隔个几年来C版就找我理论找回场子,场子找回了吗?你所说的东西,当初全都解释过,今天再解释一遍也无妨。
你应该知道编程历史的,上世纪80年代末有关C与宏编译之争,在PC编译器领域不是小事,最终分化出2大代表,一个就是微软,一个是堡兰国际。最初的DOS都是BASIC写的,微软用宏编译简化汇编技术搞出了win1.0、2.0,后来又搞了 MSC7、Office等。这些在当年都有相关文章的,你别说你不知道:你那时在读书!
宏编程并不是坏东西,相反其因为跟机械吗和汇编直接相关,因此可以说和高效。宏的缺点就在于其较弱的类型相关性,这也是VC3.0以前一直不如BC稳定的原因。VC稳定还是后来的事,那是微软与英特尔合作之后,英特尔在微码级向微软提供支持,微软的产品才真正稳定起来,而不是动不动就蓝屏了(OS/2就没这现象)。就算如此,微软的产品还是时不时出问题,这一直到win7以后才算有较大改观。前几天,我不小心点击了360的免费升级功能,将系统升到win10,我立马就发现又悲剧了:系统居然不能休眠!一旦休眠铁定在唤醒时死机。过不久,微软将这问题解决了,可能还会有人那我说过Win10不支持休眠说事。我等着。 cout<<int (changliang)<<endl;
估计vc6将其作为字符处理了,由于不可见,所以看不到结果。