1.教程中写的是#include<iostream.h>,但是调试不通过,必须要改为#include<iostream>
2.因为想把getch()放在return 0前来查看输出,所以要包含conio.h,但是好像必须写成#include"conio.h",为什么这个头文件却不可以用尖括号?而且我记得许多年前学习C++时包含的好像是stdio.h而不是conio.h啊?
3.教程上完全没有任何using,但是调试的时候发现必须写using std::cout;using std::endl;等等才能正常使用cout、endl等,为什么教程上可以没有呢?
4.关于输出语句,有的用printf,有的用cout,前面两种好歹我学过,后来看资料居然还有用system.out.print的,这到底是怎么回事啊?
5.调试时用到了HINSTANCE hinst=::LoadLibrary("dll_nolib.dll");但是有的资料说参数要加_T("dll_nolib.dll"),有的资料说参数要写成L"dll_nolib.dll"的形式,前面有个字母L,搞得我都不知道是怎么回事了。另外顺便问问这个函数名称前面有两个冒号是什么意思?
后来我查了很多资料,似乎意思是现在都C++/CLI了,从VS2005开始对C++使用了托管代码,又似乎说托管代码必须在有.NET的机器上才能运行。但是我还是不太清晰,C++/CLI是个什么东西,它跟托管代码是不是一回事呢?上面说到的这些代码的变化是不是因为变成C++/CLI引起的?最标准的C++究竟是他们还是传统的C++呢?我不想使用.NET库也不想托管代码,只想编译出的*.exe文件是直接在机器上就能运行的,应该怎么做,相关的语法规则是哪些,调试环境应该怎么建立?只有使用VC6.0才可以么(我昨晚为这个刚刚装了VC6.0的)?
21 个解决方案
#1
自己顶起来,各位都来帮忙看看哦,帮顶的也有分
#2
简单的说就是, 托管代码就是需要托管的,不能自己执行
需要一个语言解释器,例如 .NET框架
需要一个语言解释器,例如 .NET框架
#3
>教程中写的是#include <iostream.h>
>教程上完全没有任何using
那教程已经老了
>C++/CLI与托管代码是一回事么?
是。顺便vc6似乎写不了托管。
>他们和传统C++哪个更标准?
m$的那套就没进入过c++标准
>后来看资料居然还有用system.out.print的
CLI那套有谁在用么?
>前面有个字母L,搞得我都不知道是怎么回事了。
宽字符串
>另外顺便问问这个函数名称前面有两个冒号是什么意思?
全局函数
>教程上完全没有任何using
那教程已经老了
>C++/CLI与托管代码是一回事么?
是。顺便vc6似乎写不了托管。
>他们和传统C++哪个更标准?
m$的那套就没进入过c++标准
>后来看资料居然还有用system.out.print的
CLI那套有谁在用么?
>前面有个字母L,搞得我都不知道是怎么回事了。
宽字符串
>另外顺便问问这个函数名称前面有两个冒号是什么意思?
全局函数
#4
1、C++ 标准中是用 iostream 你看的iostream.h 可能是VC6中的
2、vs2008中不用getch 直接ctrl+F5 就行了
3、你使用的这些函数都是在std命名空间里定义了,标准C++都需要这样用
4、printf是C里面的。
cout是C++里面的。
system.out.print JAVA or C#里面的
5、L是说明是宽字符 “”是说明之字符常量
2、vs2008中不用getch 直接ctrl+F5 就行了
3、你使用的这些函数都是在std命名空间里定义了,标准C++都需要这样用
4、printf是C里面的。
cout是C++里面的。
system.out.print JAVA or C#里面的
5、L是说明是宽字符 “”是说明之字符常量
#5
5、冒号:不是调用你类里面的成员函数,而是调用全局的API函数,刚看错了 不好意思……
#6
讲得很具体
#7
学习
#8
你的教材 太老了......
#9
C++/CLI 是 微软创造的语言
C++也是一种语言跟C++/CLI关系不大。
system.out.print则是C++/CLI中 用的输出语言,C++没这玩意。
C++也是一种语言跟C++/CLI关系不大。
system.out.print则是C++/CLI中 用的输出语言,C++没这玩意。
#10
system.out.print 是 java 的玩意儿, C++/CLI 用的是 System::Console::WriteLine
#11
楼主提到的内容没有一个是由于引进 C++/CLI 引起的,基本是由于教程和标准的C++‘不兼容’引起的,hehe
#12
建议你买本《C++ Primer Plus》从头学学,用VS2005吧!
#13
lz是不是很多年没碰过C++了?
#14
C++ Primer Plus 支持 我看了2遍了
#15
首先说明一下,C++/CLI是微软自己搞的一套标准,有多少人用还是说不准的事。完全不管这个都行,用这个能做的,用标准c++肯定也能做出来。从你的问题来看,你对C++非常不了解,最好先看几本C++的教材。除了上面有人说的C++ Primer Plus外,C++ Primer是比较全面的C++基础教材。这是两本书,不要搞混了。另外,是不用从2005学起的,vs只是个ide而已,用最新的就行了。
1. #include <iostream.h> 这种写法不符合c++的最新标准。
2. getch()是c的用法,vc中直接ctrl+F5就可以看结果了。你要是非要用,可以用Cin()代替。
3. using是用来指定名称空间namespace的,这是C++相对于C增加的一个重大改变,建议你好好看看上面我说的那两本书中的内容。把你那本用C的思维方式说C++的教程烧掉。
4. printf是沿用C的语法,C++中不鼓励使用,最好多用Cout()。某些极端追求效率的时候可能会有些人考虑用。那种情况大部分人应该都不会遇到。至于system.out.print,这种微软闭门造车搞出来的东西,可以直接无视。
5. _T或者L是用来标明后面字符串的编码的,这是为了在不同字符编码环境中不会出现编译错误。那个写法不出问题用哪个就行了。两个冒号代表的是global(全局)的namespace。
最后,你的这些问题除了第四个外,和C++/CLI与标准C++之间的差别没什么关系。
关于托管代码,那也是微软搞出来的一种中间代码,运行机制可以用java虚拟机的方式来类比理解。
1. #include <iostream.h> 这种写法不符合c++的最新标准。
2. getch()是c的用法,vc中直接ctrl+F5就可以看结果了。你要是非要用,可以用Cin()代替。
3. using是用来指定名称空间namespace的,这是C++相对于C增加的一个重大改变,建议你好好看看上面我说的那两本书中的内容。把你那本用C的思维方式说C++的教程烧掉。
4. printf是沿用C的语法,C++中不鼓励使用,最好多用Cout()。某些极端追求效率的时候可能会有些人考虑用。那种情况大部分人应该都不会遇到。至于system.out.print,这种微软闭门造车搞出来的东西,可以直接无视。
5. _T或者L是用来标明后面字符串的编码的,这是为了在不同字符编码环境中不会出现编译错误。那个写法不出问题用哪个就行了。两个冒号代表的是global(全局)的namespace。
最后,你的这些问题除了第四个外,和C++/CLI与标准C++之间的差别没什么关系。
关于托管代码,那也是微软搞出来的一种中间代码,运行机制可以用java虚拟机的方式来类比理解。
#16
补充下,
最标准的C++在这里,最新在用的是C++99,这个网站中说的是快要确定的下一代标准。
http://www2.research.att.com/~bs/C++0xFAQ.html#when-standard
vs只是个集成编译环境而已,只是照着上面的那个standard做实现而已。当然微软也会往里面塞些乱七八糟的东西,比如托管代码什么的,但是保证和C++ standard最大限度的兼容是最基本的,vs2008的支持度有98%以上。
如果不是维护原有代码,VS6可以不用管了。那个东西出来的时候,C++99还没确定,支持度连50%都没有,连stl都没法用。
最标准的C++在这里,最新在用的是C++99,这个网站中说的是快要确定的下一代标准。
http://www2.research.att.com/~bs/C++0xFAQ.html#when-standard
vs只是个集成编译环境而已,只是照着上面的那个standard做实现而已。当然微软也会往里面塞些乱七八糟的东西,比如托管代码什么的,但是保证和C++ standard最大限度的兼容是最基本的,vs2008的支持度有98%以上。
如果不是维护原有代码,VS6可以不用管了。那个东西出来的时候,C++99还没确定,支持度连50%都没有,连stl都没法用。
#17
纠正下错误,上面提到的C++99应该是C++98标准。我之前记错了。
#18
我得承认,我确实很久没碰C++了,准确的说我几乎从来没碰过C++。不过由于赶进度,所以我来不及详细拜读各位推荐的教程(实际上早些时候我一直在看《C++Primer第四版》中文版,看到一百多页了)
谢谢大家的帮助,不过我还是没有完全弄明白:
1.C++/CLI和托管代码是不是一回事呢?也就是说是不是只要用C++/CLI写的程序编译出来一定是托管代码,并且托管代码的C++项目都是用C++/CLI编写的呢?
2.大家的意思是,我说的那些问题与C++/CLI无关,而是由于C++本身的版本原因,那么可不可以告诉我最新版本C++相对于以前都有哪些语法上的变动呢?(从别的地方复制来的也算数)
3.既然用VS2008也可开发C++的程序(相对于C++/CLI程序或托管代码),那怎样创建项目(或怎样设置)才能使用C++语法而非C++/CLI,并且使编译生成原始码的程序而非依赖.NET平台才能运行的托管程序呢?总该有某种区别吧
谢谢大家的帮助,不过我还是没有完全弄明白:
1.C++/CLI和托管代码是不是一回事呢?也就是说是不是只要用C++/CLI写的程序编译出来一定是托管代码,并且托管代码的C++项目都是用C++/CLI编写的呢?
2.大家的意思是,我说的那些问题与C++/CLI无关,而是由于C++本身的版本原因,那么可不可以告诉我最新版本C++相对于以前都有哪些语法上的变动呢?(从别的地方复制来的也算数)
3.既然用VS2008也可开发C++的程序(相对于C++/CLI程序或托管代码),那怎样创建项目(或怎样设置)才能使用C++语法而非C++/CLI,并且使编译生成原始码的程序而非依赖.NET平台才能运行的托管程序呢?总该有某种区别吧
#19
Mark
#20
太杯具了
[img=http://images.china-pub.com/ebook195001-200000/195186/zcover.jpg?2010-3-8 15:26:34][/img][img=http://images.china-pub.com/ebook45001-50000/48713/zcover.jpg?2010-3-3 21:31:38][/img]
[img=http://images.china-pub.com/ebook195001-200000/195186/zcover.jpg?2010-3-8 15:26:34][/img][img=http://images.china-pub.com/ebook45001-50000/48713/zcover.jpg?2010-3-3 21:31:38][/img]
#21
1.不是一回事,托管代码是中间代码,还可以用C#和Java生成,前提是在vs2003以上中生成,并且选择了托管代码方式。
2.标准C++的英文网址也贴出来了,这玩意好像也没什么人去翻译。你要是看不懂英文,我也没办法。那些语法和使用方式的变化,全说出来就可以写本书了。我也没见过谁用中文总结过。
3.vs在create new project时,会有选项的,你选mfc方式就行了,那就是不用托管代码的。关于vc的使用,你最好再找本vc技术内幕看看。
#1
自己顶起来,各位都来帮忙看看哦,帮顶的也有分
#2
简单的说就是, 托管代码就是需要托管的,不能自己执行
需要一个语言解释器,例如 .NET框架
需要一个语言解释器,例如 .NET框架
#3
>教程中写的是#include <iostream.h>
>教程上完全没有任何using
那教程已经老了
>C++/CLI与托管代码是一回事么?
是。顺便vc6似乎写不了托管。
>他们和传统C++哪个更标准?
m$的那套就没进入过c++标准
>后来看资料居然还有用system.out.print的
CLI那套有谁在用么?
>前面有个字母L,搞得我都不知道是怎么回事了。
宽字符串
>另外顺便问问这个函数名称前面有两个冒号是什么意思?
全局函数
>教程上完全没有任何using
那教程已经老了
>C++/CLI与托管代码是一回事么?
是。顺便vc6似乎写不了托管。
>他们和传统C++哪个更标准?
m$的那套就没进入过c++标准
>后来看资料居然还有用system.out.print的
CLI那套有谁在用么?
>前面有个字母L,搞得我都不知道是怎么回事了。
宽字符串
>另外顺便问问这个函数名称前面有两个冒号是什么意思?
全局函数
#4
1、C++ 标准中是用 iostream 你看的iostream.h 可能是VC6中的
2、vs2008中不用getch 直接ctrl+F5 就行了
3、你使用的这些函数都是在std命名空间里定义了,标准C++都需要这样用
4、printf是C里面的。
cout是C++里面的。
system.out.print JAVA or C#里面的
5、L是说明是宽字符 “”是说明之字符常量
2、vs2008中不用getch 直接ctrl+F5 就行了
3、你使用的这些函数都是在std命名空间里定义了,标准C++都需要这样用
4、printf是C里面的。
cout是C++里面的。
system.out.print JAVA or C#里面的
5、L是说明是宽字符 “”是说明之字符常量
#5
5、冒号:不是调用你类里面的成员函数,而是调用全局的API函数,刚看错了 不好意思……
#6
讲得很具体
#7
学习
#8
你的教材 太老了......
#9
C++/CLI 是 微软创造的语言
C++也是一种语言跟C++/CLI关系不大。
system.out.print则是C++/CLI中 用的输出语言,C++没这玩意。
C++也是一种语言跟C++/CLI关系不大。
system.out.print则是C++/CLI中 用的输出语言,C++没这玩意。
#10
system.out.print 是 java 的玩意儿, C++/CLI 用的是 System::Console::WriteLine
#11
楼主提到的内容没有一个是由于引进 C++/CLI 引起的,基本是由于教程和标准的C++‘不兼容’引起的,hehe
#12
建议你买本《C++ Primer Plus》从头学学,用VS2005吧!
#13
lz是不是很多年没碰过C++了?
#14
C++ Primer Plus 支持 我看了2遍了
#15
首先说明一下,C++/CLI是微软自己搞的一套标准,有多少人用还是说不准的事。完全不管这个都行,用这个能做的,用标准c++肯定也能做出来。从你的问题来看,你对C++非常不了解,最好先看几本C++的教材。除了上面有人说的C++ Primer Plus外,C++ Primer是比较全面的C++基础教材。这是两本书,不要搞混了。另外,是不用从2005学起的,vs只是个ide而已,用最新的就行了。
1. #include <iostream.h> 这种写法不符合c++的最新标准。
2. getch()是c的用法,vc中直接ctrl+F5就可以看结果了。你要是非要用,可以用Cin()代替。
3. using是用来指定名称空间namespace的,这是C++相对于C增加的一个重大改变,建议你好好看看上面我说的那两本书中的内容。把你那本用C的思维方式说C++的教程烧掉。
4. printf是沿用C的语法,C++中不鼓励使用,最好多用Cout()。某些极端追求效率的时候可能会有些人考虑用。那种情况大部分人应该都不会遇到。至于system.out.print,这种微软闭门造车搞出来的东西,可以直接无视。
5. _T或者L是用来标明后面字符串的编码的,这是为了在不同字符编码环境中不会出现编译错误。那个写法不出问题用哪个就行了。两个冒号代表的是global(全局)的namespace。
最后,你的这些问题除了第四个外,和C++/CLI与标准C++之间的差别没什么关系。
关于托管代码,那也是微软搞出来的一种中间代码,运行机制可以用java虚拟机的方式来类比理解。
1. #include <iostream.h> 这种写法不符合c++的最新标准。
2. getch()是c的用法,vc中直接ctrl+F5就可以看结果了。你要是非要用,可以用Cin()代替。
3. using是用来指定名称空间namespace的,这是C++相对于C增加的一个重大改变,建议你好好看看上面我说的那两本书中的内容。把你那本用C的思维方式说C++的教程烧掉。
4. printf是沿用C的语法,C++中不鼓励使用,最好多用Cout()。某些极端追求效率的时候可能会有些人考虑用。那种情况大部分人应该都不会遇到。至于system.out.print,这种微软闭门造车搞出来的东西,可以直接无视。
5. _T或者L是用来标明后面字符串的编码的,这是为了在不同字符编码环境中不会出现编译错误。那个写法不出问题用哪个就行了。两个冒号代表的是global(全局)的namespace。
最后,你的这些问题除了第四个外,和C++/CLI与标准C++之间的差别没什么关系。
关于托管代码,那也是微软搞出来的一种中间代码,运行机制可以用java虚拟机的方式来类比理解。
#16
补充下,
最标准的C++在这里,最新在用的是C++99,这个网站中说的是快要确定的下一代标准。
http://www2.research.att.com/~bs/C++0xFAQ.html#when-standard
vs只是个集成编译环境而已,只是照着上面的那个standard做实现而已。当然微软也会往里面塞些乱七八糟的东西,比如托管代码什么的,但是保证和C++ standard最大限度的兼容是最基本的,vs2008的支持度有98%以上。
如果不是维护原有代码,VS6可以不用管了。那个东西出来的时候,C++99还没确定,支持度连50%都没有,连stl都没法用。
最标准的C++在这里,最新在用的是C++99,这个网站中说的是快要确定的下一代标准。
http://www2.research.att.com/~bs/C++0xFAQ.html#when-standard
vs只是个集成编译环境而已,只是照着上面的那个standard做实现而已。当然微软也会往里面塞些乱七八糟的东西,比如托管代码什么的,但是保证和C++ standard最大限度的兼容是最基本的,vs2008的支持度有98%以上。
如果不是维护原有代码,VS6可以不用管了。那个东西出来的时候,C++99还没确定,支持度连50%都没有,连stl都没法用。
#17
纠正下错误,上面提到的C++99应该是C++98标准。我之前记错了。
#18
我得承认,我确实很久没碰C++了,准确的说我几乎从来没碰过C++。不过由于赶进度,所以我来不及详细拜读各位推荐的教程(实际上早些时候我一直在看《C++Primer第四版》中文版,看到一百多页了)
谢谢大家的帮助,不过我还是没有完全弄明白:
1.C++/CLI和托管代码是不是一回事呢?也就是说是不是只要用C++/CLI写的程序编译出来一定是托管代码,并且托管代码的C++项目都是用C++/CLI编写的呢?
2.大家的意思是,我说的那些问题与C++/CLI无关,而是由于C++本身的版本原因,那么可不可以告诉我最新版本C++相对于以前都有哪些语法上的变动呢?(从别的地方复制来的也算数)
3.既然用VS2008也可开发C++的程序(相对于C++/CLI程序或托管代码),那怎样创建项目(或怎样设置)才能使用C++语法而非C++/CLI,并且使编译生成原始码的程序而非依赖.NET平台才能运行的托管程序呢?总该有某种区别吧
谢谢大家的帮助,不过我还是没有完全弄明白:
1.C++/CLI和托管代码是不是一回事呢?也就是说是不是只要用C++/CLI写的程序编译出来一定是托管代码,并且托管代码的C++项目都是用C++/CLI编写的呢?
2.大家的意思是,我说的那些问题与C++/CLI无关,而是由于C++本身的版本原因,那么可不可以告诉我最新版本C++相对于以前都有哪些语法上的变动呢?(从别的地方复制来的也算数)
3.既然用VS2008也可开发C++的程序(相对于C++/CLI程序或托管代码),那怎样创建项目(或怎样设置)才能使用C++语法而非C++/CLI,并且使编译生成原始码的程序而非依赖.NET平台才能运行的托管程序呢?总该有某种区别吧
#19
Mark
#20
太杯具了
[img=http://images.china-pub.com/ebook195001-200000/195186/zcover.jpg?2010-3-8 15:26:34][/img][img=http://images.china-pub.com/ebook45001-50000/48713/zcover.jpg?2010-3-3 21:31:38][/img]
[img=http://images.china-pub.com/ebook195001-200000/195186/zcover.jpg?2010-3-8 15:26:34][/img][img=http://images.china-pub.com/ebook45001-50000/48713/zcover.jpg?2010-3-3 21:31:38][/img]
#21
1.不是一回事,托管代码是中间代码,还可以用C#和Java生成,前提是在vs2003以上中生成,并且选择了托管代码方式。
2.标准C++的英文网址也贴出来了,这玩意好像也没什么人去翻译。你要是看不懂英文,我也没办法。那些语法和使用方式的变化,全说出来就可以写本书了。我也没见过谁用中文总结过。
3.vs在create new project时,会有选项的,你选mfc方式就行了,那就是不用托管代码的。关于vc的使用,你最好再找本vc技术内幕看看。