vc如何使用纯C语言 vc如何使用纯C语言,有些代码我在LCC下就通过,在VC下即使扩展名是.C还是不能通过,是不是那里可以设定为纯C的望知道的告知一下,谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 项目属性页->C/C++->高级->编译为->编译为C代码 /TC 不就是创建一个WIN32 CONSOLE APPLICATION项目吗? 不是这样的,因为我写了一段纯C的代码在这个环境中不能执行。而在纯C环境中就可以,也是WIN下的32位纯C IDE,因为那个IDE不好,我想换成VC的, 楼主,绝对可行的。你新建一个空白的WIN32 CONSOLE APPLICATION项目,然后将你的C文件添加进工程中,编译就搞定了,我们都是这样测试C程序的。绝对没有问题。 在VC中开发的控制台程序不能在纯DOS下运行,因为在VC下即使是控制台程序都是32位的。只能在TC下开发有一个IDE叫WINTC在相对TC的介面来说要好用一点。 char *s="windows";*s='s';用LCC就可以通过,而用VC就只能编译,不能执行。代码没错, 项目 -> 属性 -> C/C++ -> 高级 -> 编译为C代码C++ 代码文件的扩展名一般是 CPPC 代码文件的扩展名一般是 C LCC能执行,LCC是啥?是托管程序吗?LCC太强了 LCC是一个纯C的IDE不支持C++,编译速度和DELPHI一样快,超快。 在CPP文件中,写C代码,一定能通过.如果不通过,那编译器就出鬼了. 楼主的程序是典型的错误char *s="windows";//表示定义s为一不可变更的常量串,所以下一句会错误*s='s'; 可改为 char s[]="windows";*s='s'; 为什么CHAR *S就是常量串,而CHAR S[]就不是常量串呢,就可改呢 编译器编译并且链接生成EXE后,char* s = "windows"中的"windows"字符串所在的区段没有可写权限,所以*s = 's'就会出错,而你说的LCC执行没有出错,只可能是这个编译器编译后,"windows"字符串所在的区段拥有可写权限。这个取决于编译器的行为,而不是语言的行为。至于为什么char s[] = "windows"这种不会出错,是因为s这时候是一个数组,他会把字符串"windows"拷贝到数组里面,以后访问s的时候,它就不是在访问那个没有可写权限的区段了。至于这个区段的权限,你也可以使用LordPE之类的PE编辑工具进行修改,这样VC编译出来的Exe执行也不会出错,不过这不是一个好方法,比如这段代码:char* s = "windows";*s = 's';printf("%s\r\n","windows");假设运行没有出错,那么输出结果也不是windows,而是sindows,因为两个"windows"所在的内存地址相同,*s = 's'修改了前一个"windows"的内容,那么后一个也跟着变了,这就是为什么那个区段不给可写权限的原因。 哦,原来是这样吗?还是w_anthony说的有道理,谢谢你,我再看看。 VC socket转发程序求助 请问,如何求解两个点的距离呢?谢谢 dll调用问题,请大家帮忙看看,急!谢谢! 小问题, 高级调试 如何得到本机的公网IP地址何端口? ◆◆◆请教高手,多线程网络编程◆◆◆ 在用InstallShield做安装程序时,打包MSSQL客户端要用到那些DLL,和写那些注册表 请问MFC+VS2017怎么做出来这样的图片浏览功能 图片的循环显示 问个MFC前途的问题 初学者的困惑啊 不涉及具体技术问题
而在纯C环境中就可以,也是WIN下的32位纯C IDE,因为那个IDE不好,我想换成VC的,
*s='s';
用LCC就可以通过,而用VC就只能编译,不能执行。代码没错,
char *s="windows";//表示定义s为一不可变更的常量串,所以下一句会错误
*s='s'; 可改为
char s[]="windows";
*s='s';
编译器编译并且链接生成EXE后,char* s = "windows"中的"windows"字符串所在的区段没有可写权限,所以*s = 's'就会出错,而你说的LCC执行没有出错,只可能是这个编译器编译后,"windows"字符串所在的区段拥有可写权限。这个取决于编译器的行为,而不是语言的行为。
至于为什么char s[] = "windows"这种不会出错,是因为s这时候是一个数组,他会把字符串"windows"拷贝到数组里面,以后访问s的时候,它就不是在访问那个没有可写权限的区段了。
至于这个区段的权限,你也可以使用LordPE之类的PE编辑工具进行修改,这样VC编译出来的Exe执行也不会出错,不过这不是一个好方法,比如这段代码:char* s = "windows";
*s = 's';
printf("%s\r\n","windows");假设运行没有出错,那么输出结果也不是windows,而是sindows,因为两个"windows"所在的内存地址相同,*s = 's'修改了前一个"windows"的内容,那么后一个也跟着变了,这就是为什么那个区段不给可写权限的原因。