关于 g++ 和 visual studio

MarcusMGao 2013-01-31 12:23:33
求教!

我有一个c++程序中,调用了cstring头文件.
在linux下用g++ 或者 gcc -lstdc++ 编译都没有问题,
但是在Visual Studio下编译有问题,如果把头文件改成 string, 其他地方又会出错。

有谁知道什么原因么?谢谢。
...全文
809 33 打赏 收藏 转发到动态 举报
写回复
用AI写文章
33 条回复
切换为时间正序
请发表友善的回复…
发表回复
FrankHB1989 2013-02-05
  • 打赏
  • 举报
回复
问的时候就不会先贴错误? 不加<string>就想用std::string?没编译过纯属活该。
parhelia512 2013-02-04
  • 打赏
  • 举报
回复
引用 30 楼 MarcusMGao 的回复:
那么简单的问题,不通过加 #include <string> 怎么让下面的程序能在vc中运行 #include <iostream> #include <cstring> using namespace std; int main() { string s("hello"); s = s + "hello"; cout << s << end……
使用stlport(http://www.stlport.org)替换vc自带的stl
rocktyt 2013-02-04
  • 打赏
  • 举报
回复
引用 30 楼 MarcusMGao 的回复:
那么简单的问题,不通过加 #include <string> 怎么让下面的程序能在vc中运行 #include <iostream> #include <cstring> using namespace std; int main() { string s("hello"); s = s + "hello"; cout << s << end……
为什么就这么不愿意加上#include <string>?你要用string,包含<string>不是很正常吗? 要用什么就包含对应的头文件,如果依赖头文件内部的相互包含跨平台肯定不行的
MarcusMGao 2013-02-04
  • 打赏
  • 举报
回复
那么简单的问题,不通过加 #include <string> 怎么让下面的程序能在vc中运行 #include <iostream> #include <cstring> using namespace std; int main() { string s("hello"); s = s + "hello"; cout << s << endl; return 0; }
引用 29 楼 parhelia512 的回复:
22楼已经解释的很清楚了 无关编译器,只是由于vc和gcc内置的stl的实现不同造成的,如果在vc中使用stlport替代内置的stl楼主的代码也是能够正常编译的
zhuyf87 2013-02-01
  • 打赏
  • 举报
回复
看到有几楼提到了CString,楼主的问题和ATL/MFC里面的CString没有关系的。^_^ 这里的cstring是头文件string.h的c++版本。 楼主贴一下代码,g++能通过编译vs不行也不奇怪吧,毕竟编译器的实现不同。
笨蛋糕 2013-02-01
  • 打赏
  • 举报
回复
using namespace std; #include<string>c++中的头文件吧
冻结 2013-02-01
  • 打赏
  • 举报
回复
系统的头文件,有些已经加了其它头文件。不再include也可以。 不过每个编译器的实现不同。 它们在某个头文件包含的其它头文件也不同而已。 所以建议在用到某个头文件的内容时都包含。 另外不要用编译器自己扩展的东西,用标准的东西。
sumos 2013-02-01
  • 打赏
  • 举报
回复
引用 17 楼 MarcusMGao 的回复:
我很想知道下面这段代码为什么g++可以编译。我知道没有加 #include <string> #include <iostream> #include <cstring> using namespace std; int main() { string s("hello"); s = s + "hello"; cout << s << endl;……
可能g++把string当做内置类型了。 还有可能,g++设计并没遵循C++标准把string放入std命名空间。
MarcusMGao 2013-02-01
  • 打赏
  • 举报
回复
我很想知道下面这段代码为什么g++可以编译。我知道没有加 #include <string> #include <iostream> #include <cstring> using namespace std; int main() { string s("hello"); s = s + "hello"; cout << s << endl; return 0; }
引用 12 楼 zhoujielunzhimi 的回复:
引用 11 楼 MarcusMGao 的回复:程序有点大,迟点上传。 程序中 #include <cstring>, 但是用的是string里面的函数,比如两个string 直接相加。 很奇怪他这种做法。 引用 10 楼 zhoujielunzhimi 的回复:晕,楼主提个问题就不能说清楚点。 #include <cstring> using na……
MarcusMGao 2013-02-01
  • 打赏
  • 举报
回复
我很想知道下面这段代码为什么g++可以编译。我知道没有加 #include <string> #include <iostream> #include <cstring> using namespace std; int main() { string s("hello"); s = s + "hello"; cout << s << endl; return 0; }
引用 9 楼 zhao4zhong1 的回复:
C:\Program Files\Microsoft Visual Studio 10.0\VC\crt\src\cstring C/C++ code?1234567891011121314151617181920212223242526272829303132333435// cstring standard header#pragma once#ifndef _CS……
  • 打赏
  • 举报
回复
using namespace std; 用了这个玩意么?
leolee82 2013-02-01
  • 打赏
  • 举报
回复
有没有加using namespace std;
parhelia512 2013-02-01
  • 打赏
  • 举报
回复
22楼已经解释的很清楚了 无关编译器,只是由于vc和gcc内置的stl的实现不同造成的,如果在vc中使用stlport替代内置的stl楼主的代码也是能够正常编译的
Hi幸福来敲门 2013-02-01
  • 打赏
  • 举报
回复
C++好难的。。。
Mr_Right 2013-02-01
  • 打赏
  • 举报
回复
你把你的代码的头文件传上来看看!
微光世界· 2013-02-01
  • 打赏
  • 举报
回复
24楼正解,不同的环境不同的编译器定义就是有差异的
赵4老师 2013-02-01
  • 打赏
  • 举报
回复
VS IDE中,可以在不明白的符号上点鼠标右键,选转到定义; 不知道调用g++编译的IDE有没有类似功能。
dingqiang107 2013-02-01
  • 打赏
  • 举报
回复
引用 23 楼 MarcusMGao 的回复:
那为什么在visual studio下面不行呢? ……
每个编译器的实现都是不一样的,这里显示的仅仅是GCC的用法。只有C++标准里明确说的,才可以保证跨平台编译。
MarcusMGao 2013-02-01
  • 打赏
  • 举报
回复
那为什么在visual studio下面不行呢?
引用 22 楼 dingqiang107 的回复:
引用 16 楼 MarcusMGao 的回复:我很想知道下面这段代码为什么g++可以编译。我知道没有加 #include <string> #include <iostream> #include <cstring> using namespace std; …… iostream --> ios --> iosfwd --> bits/stringfw……
dingqiang107 2013-02-01
  • 打赏
  • 举报
回复
引用 16 楼 MarcusMGao 的回复:
我很想知道下面这段代码为什么g++可以编译。我知道没有加 #include <string> #include <iostream> #include <cstring> using namespace std; ……
iostream --> ios --> iosfwd --> bits/stringfwd.h 里定义了 string typedef basic_string<char> string; /// A string of @c char
加载更多回复(13)

64,662

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧