精华内容
下载资源
问答
  • cmake编译时报错: 找不到头文件math.h stdlib.h fatal error: stdlib.h: No such file or directory fatal error: math.h: No such file or directory In file included from /usr/local/include/c++/6.2.0/bits/...

    cmake编译时报错: 找不到头文件math.h stdlib.h
    fatal error: stdlib.h: No such file or directory
    fatal error: math.h: No such file or directory

    In file included from /usr/local/include/c++/6.2.0/bits/stl_algo.h:59:0,
                     from /usr/local/include/c++/6.2.0/algorithm:62,
                     from /home/dmelo/proj2/opencv/modules/core/include/opencv2/core/base.hpp:55,
                     from /home/dmelo/proj2/opencv/modules/core/include/opencv2/core.hpp:54,
                     from /home/dmelo/proj2/opencv/modules/highgui/include/opencv2/highgui.hpp:46,
                     from /home/dmelo/proj2/opencv/build/modules/highgui/precomp.hpp:45:
    /usr/local/include/c++/6.2.0/cstdlib:75:25: fatal error: stdlib.h: No such file or directory
     #include_next <stdlib.h>
                             ^
    compilation terminated.
    

    解决方法1
    修改头文件

    Solution is Simple...
    1: just go to usr/include/c++
    2: chose whatever version you are using. In my case it was 6, So chose folder 6
    3: look for cmath.c and open it. Change "#include_next <math.h>" to "#include<math.h>"
    4: Save it and Done..
    
    If you are having error with stdlib.h then also do the same for "cstdlib.c" file
    

    解决方法2
    选择编译器版本,使用特定版本编译器编译,例如用g++ gcc 5

    CC=/usr/bin/gcc-5 CXX=/usr/bin/g++-5 cmake .
    make
    

    或者修改 CMakeLists.txt 文件,添加如下命令

    SET(CMAKE_C_COMPILER “/usr/bin/gcc-5”)
    SET(CMAKE_CXX_COMPILER “/usr/bin/g++-5”)
    

    解决方法3

    关闭预编译头文件

    cmake  . -DENABLE_PRECOMPILED_HEADERS=OFF
    make
    

    解决办法4

    一些库依赖没有下下来,新建的库拉一下submodule

    git submodule init
    git submodule updata
    

    上述几种办法中解决方法2是正解
    下面讲解linux下gcc、g++不同版本的安装和切换

    Ubuntu 18.04预装GCC版本为7.3,但有时在编译是需要用的不同gcc版本,下面介绍,如何安装不同的gcc 和g++,并设置根据不同的需要在不同版本之间切换。

    1. 可以通过如下命令查看当前安装的版本:
      ls /usr/bin/gcc*

    2. 安装gcc-4.8 和gcc-5:

    sudo apt install gcc-4.8 g++ -4.8
    sudo apt install gcc-5 g++ -5

    1. 使用update-alternatives设置gcc和g++:
      update-alternatives是ubuntu系统中专门维护系统命令链接符的工具,通过它可以很方便的设置系统默认使用哪个命令、哪个软件版本。
      其中40 ,50 ,70是优先级数值可以自己设定,–slave能保证gcc和g++保持相同的版本。

      sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 40 --slave /usr/bin/g++ g++ /usr/bin/g+±4.8
      sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 50 --slave /usr/bin/g++ g++ /usr/bin/g+±5
      sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 70 --slave /usr/bin/g++ g++ /usr/bin/g+±7

    2. 使用如下命令选择gcc的版本:

    sudo update-alternatives --config gcc

    可以看到当前gcc默认的版本是gcc-7,下面我们修改为gcc-4.8,直接选择编号即可。

    $ sudo update-alternatives --config gcc
    There are 3 choices for the alternative gcc (providing /usr/bin/gcc).
    * 0            /usr/bin/gcc-7     70        auto mode
      1            /usr/bin/gcc-4.8   40        manual mode
      2            /usr/bin/gcc-5     50        manual mode
      3            /usr/bin/gcc-7     70        manual mode
    
    Press <enter> to keep the current choice[*], or type selection number: 1
    update-alternatives: using /usr/bin/gcc-4.8 to provide /usr/bin/gcc (gcc) in manual mode
    
    1. 验证是否修改成功:

      gcc -v
      g++ -v
      
    2. 删除
      删除某个gcc版本的选项的话,可以使用

    sudo update-alternatives --remove gcc /usr/bin/gcc-4.5

    再使用apt-remove删除即可

    参考:
    https://github.com/highfidelity/hifi/issues/8047
    https://blog.argcv.com/articles/4655.c
    https://www.jianshu.com/p/f66eed3a3a25
    http://tuxamito.com/wiki/index.php/Installing_newer_GCC_versions_in_Ubuntu

    展开全文
  • stdlib.h

    千次阅读 2015-12-30 21:50:11
    头文件stdlib.h是一个大杂烩。它的函数可以分为六组,整型数学、算法、文本转换、多字节转换、存储分配、环境接口。

    头文件stdlib.h是一个大杂烩。它的函数可以分为六组,整型数学、算法、文本转换、多字节转换、存储分配、环境接口。
    注意两个宏EXIT_FAILURE和EXIT_SUCCESS表示异常退出和正常退出(exit(EXIT_SUCCESS)一般等价于exit(0),exit(EXIT_FAILURE)一般等价于exit(1))。还有一个宏,我们一定不陌生,那就是RAND_MAX,展开为整值常量表达式,表示rand函数返回的最大值。MB_CUR_MAX展开为正整数表达式,表示当前区域设置(类型LC_CTYPE)指定的扩展字符集中多字节字符的最大字节数目,并且不会大于MB_LEN_MAX。
    首先来看字符转换函数:

    #include <stdlib.h>
    double atof(const char *nptr);

    函数atof把nptr指向的字符串的初始部分转换为double类型的表示。函数atof返回转换后的值。

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        char *s1 = " 3.4sdf";
        char *s2 = "qwe 3.4sdf";
        printf("%f %f\n", atof(s1), atof(s2));
        return 0;
    }

    注意这段代码,第一个会正常输出,第二个出错输出0.0。3.4之前可以有空格但是一定不能有其他字符,不然就会出错。

    #include <stdlib.h>
    int atoi(const char *nptr);

    和atof一样的原理,只不过这里是将字符串的初始部分转换为int表示。

    #include <stdlib.h>
    long int atol(const char *nptr);

    函数atol把nprt指向的字符串的初始部分转换为long int表示。原理同atof。

    #include <stdlib.h>
    double strtod(const char *nptr, char **endptr);

    函数strtod把nptr指向的串的初始部分转换为double表示。如果存在转换后的值,函数strtod就返回这个值。如果没有执行转换就返回0.如果正确的转换值在可表示值的范围之外,则返回正的或者负的HUGE_VAL,并将宏ERANGE的值存储在errno中。如果正确的转换值会造成下溢,则返回0,并将宏ERANGE存储在errno中。

    #include <stdlib.h>
    long int strtol(const char *nptr, char **endptr, int base);

    函数strtol把nptr指向的串的初始部分转换为long int表示。如果存在转换后的值,函数strtod就返回这个值。如果没有执行转换就返回0.如果正确的转换值在可表示值的范围之外,则返回LONG_MAX或者LONG_MIN,并将宏ERANGE的值存储在errno中。

    #include <stdlib.h>
    unsigned int strtoul(const char *nptr, char **endptr, int base);

    函数strtoul把nptr指向的串的初始部分转换为unsigned long int表示。如果存在转换后的值,函数strtod就返回这个值。如果没有执行转换就返回0.如果正确的转换值在可表示值的范围之外,则返回ULONG_MAX,并将宏ERANGE的值存储在errno中。

    接下来是伪随机序列产生函数:

    static unsigned long int next = 1;
    #include <stdlib.h>
    int rand(void)
    {
        next = next * 1103515245 + 12345;
        return (unsigned int)(next / 65536) % 32768;
    }

    函数rand计算一个伪随机序列,范围是[0,RAND_MAX]。rand返回一个伪随机整数。注意现在的RAND_MAX是2147483647,而过去是32767(上面的代码是20几年前的了)。

    #include <stdlib.h>
    void srand(unsigned int seed)
    {
        next = seed;
    }

    函数srand使用参数unsigned int seed作为新的伪随机数序列的种子。不使用srand设定种子而直接使用rand,相当于调用srand(1)(种子为1是默认的)。

    再接着是内存管理函数:

    #include <stdlib.h>
    void *calloc(size_t nmemb, size_t size);

    函数calloc为nmemb个对象的数组分配空间,每个元素的大小为size,分配空间的所有为都被初始化为0(相当于使用malloc申请了同样大小的空间的之后,使用memset(p, ‘\0’, nmemb * size)对申请的空间进行初始化)。函数calloc返回一个空指针或者指向分配空间的指针。

    #include <stdlib.h>
    void *malloc(size_t size);

    函数malloc为一个对象分配空间,其中,该对象的大小由size指定且对象的值是不确定的。函数malloc返回一个空指针或者指向分配空间的指针。

    #include <stdlib.h>
    void *realloc(void *ptr, size_t size);

    函数realloc将ptr指向的对象的大小改变为由size指定的大小。新旧空间中较小的一个中的对象内容应该保持不变。设对象原来的大小为size1。如果size>size1,那么多出的部分的值是不确定的。如果ptr是一个空指针,那么对于一个指定的大小函数realloc的行为和malloc相同。如果不能分配空间,则ptr指向的对象不变。如果size是0而且ptr不是空指针,那么ptr指向的对象就会被释放。记住使用realloc之后就不能再使用原来的指向对象的指针了,必须使用realloc返回的指针,因为有可能对象的地址改变。

    环境通信函数:

    #include <stdlib.h>
    void abort(void);

    函数abort使程序异常终止。

    #include <stdlib.h>
    int atexit(void(*func)(void));

    函数atexit注册func指向的函数,该函数在程序正常终止的时候被调用,而不需要任何参数。注册成功,函数atexit就返回0,否则返回非0.

    #include <stdlib.h>
    void exit(int status);

    函数exit使程序的执行正常终止。首先调用所有atexit注册的函数,按照它们注册时的反顺序调用。然后,清空所有打开的具有未写缓冲数据的流,关闭所有打开的流,并删除tmpfile函数创建的所有文件。最后,控制权返回给宿主环境。注意函数exit不能返回到它的调用者。

    #include <stdlib.h>
    char *getenv(const char *name);

    函数getenv搜索宿主环境提供的环境表,来查找一个能和name指向的串匹配的串。如果不能找到就返回一个空指针。

    #include <stdlib.h>
    int system(const char *string);

    函数system把string指向的串传递给宿主环境,然后命令处理程序按照string的内容执行命令。

    查找和排序函数:

    #include <stdlib.h>
    void *bsearch(const void *key, const void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *));

    函数bsearch搜索一个nmemb个对象的数组,来查找和key指向的对象匹配的元素。base指向这个数组的第一个元素。数组中每个元素的大小由size指定。

    #include <stdlib.h>
    void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *));

    qosrt对指定的数组进行排序。

    整数算术函数:

    #include <stdlib.h>
    int abs(int j);

    函数abs计算整数j的绝对值,并返回绝对值。

    #include <stdlib.h>
    divt_t div(int numer, int denom);

    函数div返回一个div_t类型的结构,该结构由商和余数构成。

    #include <stdlib.h>
    long int labs(long int j);

    和abs原理相同。

    #include <stdlib.h>
    ldiv_t ldiv(long int numer, long int denom);

    和div_t原理相同。

    展开全文
  • 转自: http://blog.csdn.net/ybsun2010/article/details/24843835 stdlib.h 1. stdlib.h  stdlib 头文件即standard library标准库头文件 stdlib 头文件里包含了C、C++语言的...stdlib.h里面定

    转自: http://blog.csdn.net/ybsun2010/article/details/24843835


    stdlib.h

    1. stdlib.h 

    stdlib 头文件即standard library标准库头文件
    stdlib 头文件里包含了C、C++语言的最常用的系统函数
    该文件包含了C语言标准库函数的定义
    stdlib.h里面定义了五种类型、一些宏和通用工具函数。 类型例如size_t、wchar_t、div_t、ldiv_t和lldiv_t; 宏例如EXIT_FAILURE、EXIT_SUCCESS、RAND_MAX和MB_CUR_MAX等等; 常用的函数如malloc()、calloc()、realloc()、free()、system()、atoi()、atol()、rand()、srand()、exit()等等。 具体的内容你自己可以打开编译器的include目录里面的stdlib.h头文件看看。


    2. stdio.h

    stdio.h 表示标准输入输出

    int getchar() //从标准输入设备读入一个字符
    int putchar() //向标准输出设备写出一个字符
    int scanf(char *format[,argument…]) //从标准输入设备读入格式化后的数据
    int printf(char *format[,argument…]) //向标准输出设备输出格式化字符串
    char *gets(char *string) //从标准输入设备读入一个字符串
    int puts(char *string) //向标准输出设备输出一个字符串
    int sprintf(char*string,char*format[,…]) //把格式化的数据写入某个字符串缓冲区


    3. errno.h

    errno.h 是C语言C标准函式库里的标头档,定义了通过错误码来回报错误资讯的宏:
    errno宏定义为一个int型态的左值, 包含任何函式使用errno功能所产生的上一个错误码。
    一些表示错误码,定义为整数值的宏:
    EDOM 源自于函式的参数超出范围,例如sqrt(-1)
    ERANGE 源自于函式的结果超出范围,例如strtol("0xfffffffff",NULL,0)
    EILSEQ 源自于不合法的字符顺序,例如wcstombs(str, L"\xffff", 2)
    查看错误代码errno是调试程序的一个重要方法。当linux C api函数发生异常时,一般会将errno变量(需include errno.h)赋一个整数值,不同的值表示不同的含义,可以通过查看该值推测出错的原因。在实际编程中用这一招解决了不少原本看来莫名其妙的问题。比较 麻烦的是每次都要去linux源代码里面查找错误代码的含义,现在把它贴出来,以后需要查时就来这里看了。


    4. string.h

    C语言里面关于字符数组的函数定义的头文件,常用函数有strlen、strcmp、strcpy、strstr、memcpy、memset等等,更详细的可以到include文件夹里面查看该文件。


    展开全文
  • 1、stdlib.h是standard library标准库头文件,定位在通用工具函数。 2、stdio.h是standard input&output标准输入输出头文件,定位在标准的输入输出工具函数。 二、封装函数不同 1、stdlib.h主要封装了malloc()、...

    一、定位不同

    1、stdlib.h是standard library标准库头文件,定位在通用工具函数。

    2、stdio.h是standard input&output标准输入输出头文件,定位在标准的输入输出工具函数。

    二、封装函数不同

    1、stdlib.h主要封装了malloc()、calloc()、realloc()、free()、system()、atoi()、atol()、rand()、srand()、exit()等函数。

    2、stdio.h主要封装了getchar()、putchar()、scanf()、printf()、gets()、puts()、sprintf()等函数。

    三、定义类型不同

    1、stdlib.h定义了size_t、wchar_t、div_t、ldiv_t和lldiv_t五种类型。

    2、stdio没有定义类型

    扩展资料:

    stdlib.h包含的函数

    输入样式:C语言模式:#include <stdlib.h>

    C++样式:#include

    1、函数名称: exit

    函数原型: void exit(int state)

    函数功能: 程序中止执行,返回调用过程

    函数返回:

    参数说明: state:0- 正常中止,非 0- 非正常中止

    2、函数名称: getenv

    函数原型: char* getenv(const char *name)

    函数功能: 返回一个指向环境变量的指针

    函数返回:环境变量的定义

    参数说明: name- 环境字符串

    3、函数名称: putenv

    函数原型: int putenv(const char *name)

    函数功能: 将字符串name增加到DOS环境变量中

    函数返回: 0:操作成功,-1:操作失败

    参数说明: name-环境字符串

    4、函数名称: labs

    函数原型: long labs(long num)

    函数功能: 求长整型参数的绝对值

    函数返回:绝对值

    5、函数名称: atof

    函数原型: double atof(char *str)

    函数功能: 将字符串转换成一个双精度数值

    函数返回: 转换后的数值

    参数说明: str- 待转换浮点型数的字符串

    6、函数名称:fcvt

    函数原型: char *fcvt(double value,int ndigit,int *dec,int *sign)

    函数功能: 将浮点数变成一个字符串

    函数返回: 转换后字符串指针

    string.h头文件中的函数:

    1、#include //STL 通用算法

    2、#include //STL 位集容器

    3、#include //复数类

    4、#include //STL双端队列容器

    5、#include //异常处理类

    6、#include //STL 线性列表容器

    7、#include //STL 映射容器

    8、#include //基本输入/输出支持

    9、#include //输入/输出系统使用的前置声明

    10、#include //基本输入/输出支持

    C语言标准库中一个常用的头文件,在使用到字符数组时需要使用。string .h 头文件定义了一个变量类型、一个宏和各种操作字符数组的函数。C语言里面关于字符数组的函数定义的头文件,常用函数有strlen、strcmp、strcpy等等。

    扩展资料

    一般在C++的库中,对于一个旧的,也就是带“.h”扩展名的库文件(比如iostream.h),在新标准后的标准库中都有一个不带“.h”扩展名的与之相对应,区别除了后者的好多改进之外,还有一点就是后者的东东都塞进了“std”名字空间中。

    但唯独string特别。问题在于C++要兼容C的标准库,而C的标准库里碰巧也已经有一个名字叫做“string.h”的头文件,包含一些常用的C字符串处理函数。这个头文件跟C++的string类半点关系也没有,所以 并非 <string.h>的“升级版本”,

    string.h头文件里常用的函数有:
    strlen求字符串长度。
    strcmp比较2个字符串是否一样。
    strcat字符串连接操作。
    strcpy字符串拷贝操作。
    strncat字符串连接操作(前n个字符)。
    strncpy字符串拷贝操作(前n个字符)。
    strchr查询字串。
    strstr 查询子串。

    string.h是C语言里面关于字符数组的函数定义的头文件,更详细的可以到include文件夹里面查看该文件。

    展开全文
  • stdlib.h头文件

    万次阅读 多人点赞 2018-05-15 17:36:16
    stdlib.h是一些常用的函数,但是又不知道把它们放到哪里合适,因此就都放到了stdlib.h这个头文件中。stdlib.h可以提供一些函数与符号常量,具体如下:根据ISO标准,stdlib.h提供以下类型:size_t, wchar_t, div_t, ...
  • [nachos]stdlib.h和sysdep.h冲突了?? 输入指令make 然后报错: g++ -m32 -g -Wall -Wshadow -traditional -I…/threads -I…/machine -DTHREADS -DHOST_i386 -DCHANGED -c …/threads/main.cc /usr/include/stdlib...
  • C语言-stdlib.h

    2019-11-30 21:52:41
    C语言-stdlib.h库 定义 :即standard library标准库头文件。stdlib.h里面定义了五种类型、一些宏和通用工具函数。 使用: #include <stdlib.h> 内部函数:malloc()、calloc()、realloc()、free()、system()...
  • #include《stdlib.h》作用

    千次阅读 多人点赞 2018-10-29 21:08:33
    是引用stdlib.h头文件,即#include &lt;stdlib.h&gt;。这里的.h是不可缺少的。 stdlib.h中,包含了C语言的一些常用库函数。如 动态内存相关的malloc, realloc,zalloc,calloc,free等。 随机数相关的ra...
  • stdio.h&stdlib.h&string.h

    千次阅读 2012-05-07 14:02:23
    stdio.h&stdlib.h&string.h   (2011-12-02 13:15:07) 转载▼ 标签:  杂谈   stdio.h中的标准输入输出函数  int getchar() //从标准输入设备读入一个字符,显示  int...
  • stdio.h与stdlib.h

    2017-02-24 10:39:52
    stdlib 头文件即standard library标准库头文件 ...stdlib.h里面定义了五种类型、一些宏和通用工具函数。 类型例如size_t、wchar_t、div_t、ldiv_t和lldiv_t; 宏例如EXIT_FAILURE、EXIT_SUCCESS、RAND_MAX和MB
  • 《C++》#include stdlib.h

    千次阅读 2019-08-18 11:30:44
    stdlib.h>的。 这是C语言标准的包含库头文件stdlib.h的语句。在代码中引用此句后,就可以使用stdlib.h中的函数,而不会出现未声明的警告。 stdlib.h是C语言库头文件之一,包含了以下函数: 1 字符串转换为数字的...
  • c语言库函数总结----stdlib.h

    千次阅读 多人点赞 2019-11-18 19:33:39
    思维导图大纲 前言 stdlib .h 头文件定义了四...库函数 stdlib.h 函数原型 double atof(const char *str) //时间:2019年11月15日 //作者:Kroner //编译环境:VS 2019 //库函数 stdlib.h //函数原型 do...
  • qt4编译正常,改成qt5后遇到问题 usr/lib/x86_64-linux-gnu/qt5/...In file included from /usr/include/c++/7/bits/stl_algo.h:59:0, from /usr/include/c++/7/algorithm:62, from /usr/include/x86_64-l...
  • C语言stdio.h和stdlib.h

    千次阅读 2017-06-14 15:05:39
    stdlib.h里面定义了五种类型、一些宏和通用工具函数。类型例如size_t、wchar_t、div_t、ldiv_t和lldiv_t;宏例如EXIT_FAILURE、EXIT_SUCCESS、RAND_MAX和MB_CUR_MAX等等; 常用的函数如malloc()、calloc
  • ## stdlib.h

    2019-02-18 22:12:17
    ** stdlib.h ** malloc()
  • stdlib.h: No such file or directory

    千次阅读 2020-03-20 21:52:40
    stdlib.h: No such file or directory问题问题原因解决办法方法一方法二参考资料 问题 今天在编译一个QT项目的时候报错了,错误如下: stdlib.h: No such file or directory 我用的是Ubuntu和QT,很奇怪,之前编译都...
  • stdlib.h和stdio.h的区别

    千次阅读 2017-06-07 10:17:14
    stdlib 头文件即standard library标准库头文件 ...stdlib.h里面定义了五种类型、一些宏和通用工具函数。 类型例如size_t、wchar_t、div_t、ldiv_t和lldiv_t; 宏例如EXIT_FAILURE、EXIT_SUCCESS、RAND_MAX和MB_CUR
  • stdlib.h stdio.h unistd.h相关文件的说明

    千次阅读 2011-12-11 14:42:47
    stdio.h 头文件的说明: ... stdlib.h 头文件的说明:http://blog.sina.com.cn/s/blog_706d9cef0100wkim.html unistd.h 头文件的说明:http://hi.baidu.com/564441968/blog/item/9d91e288827021cafd

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 97,667
精华内容 39,066
关键字:

stdlib.h