zoukankan      html  css  js  c++  java
  • C/C++下__FILE__参数过长的问题解决办法

    编译usrsctp库时,爆出一个编译问题:

    snprintf(msg, sizeof(msg), "OOTB, %s:%d at %s", __FILE__, __LINE__, __func__);

    这儿报告msg的空间不足以存放后续的内容,

    此字符串在实际编译后,存放的内容大小是固定的,但由于__FILE__带了全路径,导致报告空间不够。

    搜索一通后解决办法如下:

    如果是使用CMAKE编译的,在CMakeLists.txt中添加这么一行(C++语言需要将CMAKE_C_FLAGS换成CMAKE_CXX_FLAGS)

    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D__FILENAME__='"$(subst ${CMAKE_SOURCE_DIR}/usrsctplib/netinet/,,$(abspath $<))"'")
    

    如果使用的是GNU Makefile,则应该在相应的Makefile中添加如下行(C++语言需要将C_FLAGS换成CXX_FLAGS)

    C_FLAGS+=-D__FILENAME__='"$(subst $(SOURCE_PREFIX)/,,$(abspath $<))"'
    

    同时源代码中,所有使用__FILE__的,替换成__FILENAME__宏。

  • 相关阅读:
    NFS服务
    rsync
    jquery animate
    一个简单的widget
    EXTJS学习(一)
    jquery+linq制作博客(二)
    EXTJS学习(二)Message
    Jquery ui widget中的_create(),_init(),destroy()
    Jquery ui widget开发
    Json.net简单用法
  • 原文地址:https://www.cnblogs.com/eaglexmw/p/10275504.html
Copyright © 2011-2022 走看看