`
chenqi210
  • 浏览: 78988 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

g++ strerror_r返回类型

 
阅读更多
#ifdef HAVE_DECL_STRERROR_R
#   ifdef HAVE_STRERROR_R_CHAR_P
    std::string explain_errcode(int errcode) {
        std::vector<char> buffer(0xff);
        do {
            if (strerror_r(errcode, &buffer[0], buffer.size()) != ERANGE)
                return &buffer[0];
            buffer.resize(buffer.size() * 2);
        } while (true);
    }
#   else
    std::string explain_errcode(int errcode) {
        std::vector<char> buffer(0xff);
        do {
            if (strerror_r(errcode, &buffer[0], buffer.size()) != ERANGE)
                return &buffer[0];
            buffer.resize(buffer.size() * 2);
        } while (true);
    }
#   endif
#else

 返回类型在autoconf里测试出来是int,但是g++编译时却成了char*。原因在于autoconf里AC_FUNC_STRERROR_R测试时用的gcc,默认不定义_GNU_SOURCE。而g++则默认定义了_GNU_SOURCE宏(据说libstdc++依赖这个宏)

分享到:
评论

相关推荐

    glog-0.3.4

    add StrError and replace posix_strerror_r call fix VC build by adding GOOGLE_GLOG_DLL_DECL style fix for C++11 reduce dynamic allocation from 3 to 1 per log message attempt to improve mingw-w64 ...

    UNIX-编程中错误输出的线程安全问题.docx

    在面对这些失败时,程序员通常会使用错误处理机制,如`perror`、`strerror`或`strerror_r`等库函数,来输出错误信息。然而,这些函数在多线程环境下可能会引发线程安全问题,因为它们可能涉及到共享数据,比如全局...

    fdt_strerror.rar_V2

    2. 错误消息映射:每个错误码都会有一个对应的错误消息字符串,"fdt_strerror"会根据错误码返回相应的消息。 3. 函数实现:"fdt_strerror"函数的实现,包括错误码的查找逻辑和错误消息的返回过程。 4. 可能的宏定义...

    线程安全函数

    对于那些由于传统接口设计原因而难以成为线程安全的函数,POSIX要求提供后缀为 `_r` 的替代版本,如 `strerror_r`,来确保其在多线程环境下的安全性。 #### 四、线程安全函数示例分析 - **`strerror`**:该函数...

    UNIX 程序中的错误代码

    除了`perror()`和`strerror()`之外,还有一个`strerror_r()`函数,它提供了一种线程安全的方式来获取错误信息,尤其是在多线程环境中。`strerror_r()`可以将结果存储在一个用户提供的缓冲区中,避免了潜在的竞态条件...

    FtpLib upload class

    sprintf(errorMsg, "%s/n", curl_easy_strerror(resCode)); if (resCode == CURLE_LOGIN_DENIED){ return FTP_LOGIN_DENIED; } else if (resCode == CURLE_COULDNT_CONNECT){ return FTP_COULDNT_...

    lunix:Lua Unix模块

    适当时,会O_CLOEXEC使用诸如strerror_r和O_CLOEXEC类的接口。 该模块甚至包括针对固有的非线程安全umask系统调用的新颖解决方案,其中从一个线程调用umask可能导致另一个线程创建具有不安全或意外权限的文件。 ...

    C语言库函数C语言库函数

    1. GNU扩展:在GCC编译器环境下,可以使用一些如strerror_r、getline、mempcpy等非标准但非常实用的函数。 2. 多线程支持:pthread.h库提供了多线程编程的相关函数,如pthread_create、pthread_join等。 3. 位操作...

    mips和标准android2.1 的bionic区别.docx

    字符串处理函数`strerror_r`的实现,MIPS版本可能存在一些宏定义的差异,这可能与错误处理机制有关。而在信号处理方面,MIPS的`sigsuspend`函数和`sigsetmask`函数内部逻辑有所增强,可能是因为MIPS需要更精确地控制...

    C99标准英文版pdf

    `errno`宏现在是一个指向`int`类型的指针,可以使用`strerror_r()`函数获取错误消息字符串。 八、预处理宏`__func__`:自动定义为当前函数的名称,方便在调试信息中使用。 九、标准库更新 许多标准库函数得到改进...

    UNIX网络编程 卷1:套接字联网API(英文版•第3版) 源代码

    6. **错误处理与调试**:提供了处理网络编程中常见错误的方法,如EINTR、EWOULDBLOCK等,以及如何使用strerror_r获取错误信息。 7. **UDP编程**:介绍了无连接协议UDP的特点,展示了如何发送和接收UDP数据包,以及...

    mips和标准android2.1 的bionic区别.pdf

    6. `libc/string/strerror_r.c`: 定义宏`__BIONIC_ERRDEF`的改变,反映了MIPS版本在错误代码映射上的差异,可能影响错误处理的输出。 7. `libc/unistd` 目录下的若干信号处理函数: 如`sigblock`, `sigsetmask`,...

    亚嵌嵌入式Linux就业班-(第五周)网络编程及项目实践

    4. **错误处理与调试**:学习如何处理网络编程中常见的错误,如连接超时、数据包丢失等问题,并了解如何使用strerror_r、perror等函数进行错误信息打印。 5. **网络安全**:讨论网络编程中的安全问题,如数据加密、...

    modbus已经配置好环境的sln例程

    VS2013是Visual Studio的一个版本,提供了一个集成的开发环境,支持C++、C#、VB.NET等多种编程语言,适用于Windows平台的软件开发。在这个例子中,它被用来编写和调试Modbus通信的代码。 至于压缩包内的文件...

    strerror-开源

    这是一个用于将系统错误代码转换为可读文本的小实用程序。 您是否对“错误 71”之类的消息感到厌烦? 此实用程序将帮助您了解它们的含义。

    libmodbus-3.1.10

    - **跨平台**:由于其开源性质,libmodbus可在Linux、Windows、FreeBSD、Mac OS X等多种操作系统上运行,支持C和C++语言接口。 - **API**:libmodbus提供了一套完整的API,方便开发者在自己的应用程序中集成Modbus...

    C11规范英文版(附带中文翻译版)

    在字符串处理上,`&lt;string.h&gt;`中的`strerror_s()`函数替代了`strerror()`,以提高安全性。`&lt;wchar.h&gt;`和`&lt;wctype.h&gt;`头文件扩展了宽字符和宽字符类的功能。 在位操作方面,C11提供了新的位字段特性,允许更灵活地...

    Unix网络编程(第三版)源码

    4. **错误处理和调试技巧**:源码中包含了丰富的错误处理机制,如使用errno、perror等函数进行错误诊断,以及如何利用strerror_r等函数获取详细的错误信息,这对于提升程序的健壮性至关重要。 5. **网络编程基础**...

    pthreads-w32-2-8-0-release.tar.gz

    7. **线程安全函数**:如`strerror_r()`,pthreads-w32提供线程安全的版本,避免了在多线程环境中可能产生的竞态条件。 使用pthreads-w32-2.8.0-release,开发者可以在Windows上编写符合POSIX标准的线程代码,同时...

    C++ Unicode SBCS 函数对照表.doc

    - `strerror`:返回错误描述字符串,`wcserror`是宽字符版本,还有安全版本`strerror_s/wcserror_s`。 5. **字符检查**: - `isalnum`、`isalpha`、`isdigit`等函数:检查字符是否属于特定类别,如字母、数字等,...

Global site tag (gtag.js) - Google Analytics