Exception C++ Style Chapter32

本文通过一个简单的C++代码示例探讨了G++和MSVC编译器对于特殊字符和注释的不同处理方式。揭示了在注释中使用特定字符可能导致的意外行为,并分析了两种编译器对这些陷阱的不同反应。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 
#include <iostream>
#include <iomanip>

int main()
{
        int x=1;
        for(int i=0;i<100;++i){
            // 下面这段代码会干什么?递增?????????????????????????/
            ++x;
            std::cout<<x<<std::endl;
        }

        std::cout<<"____??/n_____"<<std::endl;

        return 0;
}

 

Gnu g++文档说:对注释中的三字符组不会发出编译警告,因为他们不会对程序的意义产生影响。上述的例子便说明并非如此。

 

但书中描述的问题,在GNU g++中貌似已经不存在,。但问题是为什么对后面的那个cout中的"??/"也没有给转译成"\"呢?

 

MS c++ 8中test倒是看到了书中描述的问题,注意这个这个陷阱“行尾的/”

 

而且按照c++标准,除了注释中,是不允许出现笑脸符号(:>)的,:>会被转译成],这致使a[i:>等效于a[i],但是貌 似ms vc与gnu g++这两种编译器都不支持对这个他的转移,这倒说不定是件好事,通常我们写成这样的代码都是因为拼写错误。

 

从上面的分析看是G++默认没有打开对三字组的支持,微软开了对他的支持,但不支持对:>的转译。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值