• C++设计实现算法时易犯错误


    1.未初始化

    指针未初始化为NULL,造成判断条件出错

    数值未初始化为0,造成数组超界,内存泄漏

     2.

    long long输入时

    lld or I64d

    写成d一定出错

    3.gcc编译报错:程序中有游离的‘357’‘273’‘277’等

    感谢http://www.cnblogs.com/lidp/archive/2009/06/17/1697886.html

    造成的原因主要有两个:
    1. 程序(*.c,*.h)中使用了中文的标点符号(全角),比如;,},+
    改成英文的标点半角符号就行了。
    甚至有时候空格也会出现类似错误,删掉该空格 重新输入。
    vim里面做类似替换还是很容易的。

    如何看到报错的符号?
    od -c hello.c > log.txt
    在log中就能看到符号了

    2. 
    如果替换成了英文标点还出错的话,还报此错误,那么就是文件存贮格式的问题了。
    一般在windows下的文件都存成ansci格式为了在linux下能通用,建议保存成UTF-8不带BOM 
    编码格式,因为目前gcc和g++不支持UTF-8带BOM编码格式。

    用g++编译的时候碰到UTF-8 BOM错误怎么办?
    $ g++ -I../../include unit_test.cpp -o unit_test
    unit_test.cpp:1: 错误: 程序中有游离的'357'
    unit_test.cpp:1: 错误: 程序中有游离的'273'
    unit_test.cpp:1: 错误: 程序中有游离的'277'
    In file included from unit_test.cpp:63:
    ...

    或在英文系统下:
    $ g++ -I../../include unit_test.cpp -o unit_test
    unit_test.cpp:1: error: stray '357' in program
    unit_test.cpp:1: error: stray '273' in program
    unit_test.cpp:1: error: stray '277' in program
    In file included from unit_test.cpp:63:
    ...


    如何判断文件是否是使用UTF-8 BOM存储的?

    执行下面的命令:
    $ cat cpp/src/unit_test/unit_test.cpp |hd -n 10
    00000000 ef bb bf 2f 2a 2a 2a 2a 2a 2a |.../******|
    0000000a

    哪些我可能记不得了,反正我在校内OJ上97分的题有23个……全是一个叫做yfz的毒瘤选手加的额外数据。卡取模,卡边界,卡精度,卡极值,卡内存访问,

    卡递归栈,卡常数,卡题面数据范围,卡SPFA,卡网络流,卡STL,卡int,卡long long,卡哈希,卡随机化,卡爬山,卡退火,卡粒子群……

    3.针对CodeBlocks:undefined reference to `xxxxxx@x' 的解决方案

    undefined reference to `inet_addr@4'
    undefined reference to `gethostbyname@4'
    undefined reference to `WSAGetLastError@0'
    undefined reference to `inet_ntoa@4'
    undefined reference to `WSAStartup@8'
    undefined reference to `inet_ntoa@4'
    undefined reference to `socket@12'
    undefined reference to `htons@4'
    undefined reference to `bind@12'
    undefined reference to `listen@8'
    undefined reference to `accept@12'
    undefined reference to `recv@16'
    undefined reference to `send@16'
    undefined reference to `shutdown@8'
    undefined reference to `closesocket@4'
    undefined reference to `closesocket@4'
    undefined reference to `WSACleanup@0'

    原因:缺少lib库。

     解决办法:添加lib库。

    1、打开对话框。compiler

    2、选择Linke Setting

    3、添加相应的*.a库文件。

    具体.a由具体情况而定,如send@16  libwsock32.a

    https://blog.csdn.net/Chuck_0430/article/details/11181221

  • 相关阅读:
    Java入门——数组和方法
    Java入门——选择与循环语句
    Java入门——面向对象基础
    十天学会Oracle数据库(Day2)
    Java入门——理解面向对象:UML设计
    十天学会Oracle数据库(Day1)
    Codeforces Round #482 (Div. 2) :B
    Codeforces Round #482 (Div. 2) :C
    Codeforces Round #490 (Div. 3) :F. Cards and Joy(组合背包)
    POJ-2155:Matrix(二维树状数祖)
  • 原文地址:https://www.cnblogs.com/kimsimple/p/8511306.html
Copyright © 2020-2023  润新知