为什么CE?

encore

2018-11-05 14:52:35

Personal

CE是最不应该出现的错误,因为编译器会有提示信息。虽然是英文的,[百度™](http://www.baidu.com)一下不过分吧。当然有时候会出现本机运行正常,但是OJ上CE的情况。这往往是由于编译环境不同造成的。主要注意以下几点: * 没有```using namespace std;``` 别笑,这种错误有时候真的会出现。 * 系统关键字、函数重名 不同的操作系统有不同的关键字和相关的函数。听说上次有个人在NOIP的时候把函数命名为```pipe```导致爆零,不知道是不是真的。 ```cmath```库里面还有一个函数还是变量叫```y1```,当年被坑惨了。。。 * 全角空格(中文空格) 我希望你不是因为抄题解而导致这种错误。。。这个也不难查,系统会显示“stray '\xxx' in program”。 * 关于max、abs等简单函数 最好自己写。在某些oj上有时候会CE。 ~~其实往往是因为该OJ编译器版本过低。~~ * 关于typedef(这个本机上也会CE 它没死,只是要注意 ```cpp typedef long long LL; ``` 时,不能出现类似 ```cpp unsigned LL a; ``` 这样的语句。 为什么?因为```typedef```不是单纯的文本替换。它定义了一个类型。而```unsigned```也是一个类型,这就导致类型重复定义了。 正确代码(例: ```cpp typedef long long LL; typedef unsigned long long uLL; ``` (不要指望```typedef register int RI```了