作者tinlans ( )
看板C_and_CPP
标题Re: [问题] gcc -std=c++98 的 error
时间Fri Apr 10 19:15:57 2009
※ 引述《photon3108 (John)》之铭言:
: 其实我有点不了解的是,这个选项可以做到:
: (standard c++ 的版本是 98 or later)
: a. 符合 standard c++ 的功能,都可以使用。
: b. 不符合 standard c++ 的功能,都不允许编译通过。
: 可以做到吗?
目前最标准的 C++ 是 C++03,
但是 C++03 还是没有纳入 C99,
正式纳入 C99 的是 C++0x (应该已经确定是 09),
但是这个标准还没出来,
所以你下这种选项会发生什麽事情还是没有一定。
: 另外,有一个疑问是,程式内容没有使用宽字元,也没有使用这两个 functions,
: (所以应该也没有使用到 C99),为什麽会跳出这些 errors?,这个问题只有我遇
: 到吗?,如果是的话,是不是我的电脑有问题。
不是你的电脑有问题,
应该是某些 header (像是 iostream) 的内部实作会 include 一些 file,
然後 call 一些 function,
但是它 include 的 file 会因为 -std=c++98 设了一些 macro,
使得一些 function 宣告式被条件式编译过滤掉,
就会出现这类 error;
这应该是 release library 的人没测过 -std=c++98 就放出来的缘故,
因为大部分 default 就是 -std=gnu++98。
靠 compiler 检查标准毕竟不是一个办法,
还是自己多看书搞清楚自己写的每一行是不是标准才是正途,
因为实务上大家就是喜欢用一些 compiler 提供的 extensions,
特别是 C99 混搭 C++98 这一项。
--
Ling-hua Tseng (
[email protected])
Department of Computer Science, National Tsing-Hua University
Interesting: C++, Compiler, PL/PD, OS, VM, Large-scale software design
Researching: Software pipelining for VLIW architectures
Homepage:
https://www.tinlans.org
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.160.110.179
※ 编辑: tinlans 来自: 118.160.110.179 (04/10 19:16)