VC6(sp6)不支持2?TMD

sharkabc 2005-04-25 01:47:43
class A
{
public:
static char* const cp = "aabbcc";
static const char c[10] = {"aabbcc"};
static const double d = 4.4;
static const int i = 3;
};


int main()
{
return 0;
}

//
VC6非要一个在.h里面声明
public:
static const double PRECISION;
在.cpp里面定义
const double Num24::PRECISION = 0.00001;

郁闷啊。换!一定要换!要学习C++,一定要离开VC.
我就搞不懂了,MFC就那么牛吗?好多人推崇倍至啊!
...全文
212 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
sharkabc 2005-04-25
  • 打赏
  • 举报
回复
楼上的太看得起我这个C++ Beginner
我个人猜测:据说C++的编译器是用C asm写的,因为各自的设计不同,为了一定的性能要求,不会仔细考虑当时C++的一些组织的标准呼吁吧,何况98年之前C++的工业标准还没有诞生。所以各个厂商都是各自为政!
不知道理解的对不?
piaozi2003 2005-04-25
  • 打赏
  • 举报
回复
To: sharkabc(shark)

我倒是很想知道为什么不同的编译器的设计者在这点上会有不同的考虑,毕竟那些
设计者对C++具有相当的了解呀,他们作出抉择时肯定有他们考虑!
cmoring 2005-04-25
  • 打赏
  • 举报
回复
g++ -v
Reading specs from /usr/lib/gcc-lib/i686-pc-cygwin/2.95.3-5/specs
gcc version 2.95.3-5 (cygwin special)
kangji 2005-04-25
  • 打赏
  • 举报
回复
楼主那段代码在dev c++中编译不能通过
版本号:4.9.9.2
whyglinux 2005-04-25
  • 打赏
  • 举报
回复
>> g++ 0009.cpp -o 0009
>> 一点问题都没有!

告诉我你使用的版本号。如果你使用3.0以前的GCC,或许能够通过,因为以前的版本对标准的支持较弱。
oyljerry 2005-04-25
  • 打赏
  • 举报
回复
vc7还是支持标准要好些
oyljerry 2005-04-25
  • 打赏
  • 举报
回复
^_^,vc还是比较好用的
sharkabc 2005-04-25
  • 打赏
  • 举报
回复
piaozi2003()

不会吧。1998-09-01就出了ISO/IEC 14852 C++的工业标准啊。
我是觉得VC6过时了,但是看到还有那么多ms的粉丝特别看好mfc,所以不敢大声而已!
sharkabc 2005-04-25
  • 打赏
  • 举报
回复
whyglinux(山青水秀)
虽然你有5个三角,可是我仍然要反驳你!
我在Cygwin 都执行过了
class A
{
public:
static char* const cp = "aabbcc";
static const char c[10] = {"aabbcc"};
static const double d = 4.42356;
static const int i = 3;
};


int main()
{
return 0;
}

g++ 0009.cpp -o 0009
一点问题都没有!
不是钻牛角尖!既然要学C++,我就要弄明白孰是孰非!!!
piaozi2003 2005-04-25
  • 打赏
  • 举报
回复
1 我根本就没有看出来上面哪里违反了C++规范,请各位指教!

2 规范是人在某一时间点定的,从发展的角度看没有一个规范是绝对正确的,所以我想应该报着
批判的观点来看规范或许对自己学习更加有益,而不是上来就指责编译器!
sharkabc 2005-04-25
  • 打赏
  • 举报
回复
我现在是对vc6一肚子火, wwxsoft(婉儿) MM还笑?
whyglinux 2005-04-25
  • 打赏
  • 举报
回复
不是VC的问题。你需要了解C++标准对此是怎样规定的:

对于所有的类的数据成员(包括静态和非静态成员),在类中都不能有初始化值。但是只有一种情况例外:如果这个成员是一个静态const成员、并且它的类型是整数类型(包括char、int、long及其unsigned型、不包括float、double等类型),可以在类中声明的时候给它一个初始化值。

class A {
public:
static const char c = 'A'; // OK
static const int m = 32; // OK
static double pi = 3.14; // 非法,pi不是整数类型
// ...
};

另外你还应该知道,类定义中的静态成员所在的语句都是声明,而不是定义,所以一般还要在类外对它进行定义。
dudu妈 2005-04-25
  • 打赏
  • 举报
回复
呵呵
sharkabc 2005-04-25
  • 打赏
  • 举报
回复
我是刚搞C++,看的书籍当然不是windows c++ 也不是mfc,也不是vc,每次都是用vc的console测试,唉 对标准支持太差,一直郁闷.........
sharkabc 2005-04-25
  • 打赏
  • 举报
回复
有没有好的c++编译器(windows platform)推荐:
1、有code insight功能,代码可以自动补齐
2、完全支持c++标准,尤其stl
3、占用内存少,开个5、6没有问题
useresu 2005-04-25
  • 打赏
  • 举报
回复
可视的编译器?
其实vc还是不错的,

个人意见,大概因为我平时要做些windows的编程吧.
qhfu 2005-04-25
  • 打赏
  • 举报
回复
class 定义体外面就可以了吧,在.h文件里面也是可以的啊
useresu 2005-04-25
  • 打赏
  • 举报
回复
vc7据说就对标准支持的好,
如果单纯是Stl,
给vc6挂个stlport能好一些.
zengwujun 2005-04-25
  • 打赏
  • 举报
回复
vc.net好些了
useresu 2005-04-25
  • 打赏
  • 举报
回复
好帖子就是要顶!!!
加载更多回复(5)

64,642

社区成员

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

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