当前位置:  技术问答>linux和unix

宏定义里面不能再包含条件编译语句吗?见内容

    来源: 互联网  发布时间:2015-12-05

    本文导语:  下面的宏定义编译报错 #define MGR_MEM_ERR_RETURN(p) if(NULL == p) { #ifdef _DEBUG printf("fail to alloc memoryn"); #endif return; } 错误如下: : error C2162: expected macro formal parameter : error C2162: expected macro formal parameter 为什...

下面的宏定义编译报错
#define MGR_MEM_ERR_RETURN(p)
if(NULL == p)
{
#ifdef _DEBUG
printf("fail to alloc memoryn");
#endif
return;
}
错误如下:
: error C2162: expected macro formal parameter
: error C2162: expected macro formal parameter
为什么?

|
#ifdef不能在一行里面完成,#define又要求必须在一行里面定义,可能不能嵌套。
分开写吧:
#ifdef DEBUG
#define MGR_MEM_ERR_RETURN(p) if(NULL == p)

        printf("fail to alloc memoryn");
                return ;
}
#else
#define MGR_MEM_ERR_RETURN(p) if(NULL == p)
        {
                return ;
        }
#endif

    
 
 

您可能感兴趣的文章:

  • mysql自定义排序顺序语句
  • 请教结构体定义--LINUX驱动程序中语句
  • T-SQL学习之二 自定义函数和控制流语句
  • 为什么我用GCC编译后,在源文件中定义的宏被修该了?(产生编译错误)
  • 如何在Makefile中定义宏进行条件编译?
  • gcc/g++中可不可以在编译选项中预定义宏
  • xlc编译最后链接时出现未定义的问题
  • 可能是迭代的宏定义编译器不认
  • 为什么我定义的类 总被编译程序提示要求 改为抽象类型?
  • 编译arm版prelink出错,elf_与gelf_的库函数全部没有定义
  • QT编译问题:link过程重复定义
  • 我用的是atmel一个成熟的开发板。有一个触摸屏驱动程序,以<M>的方式编译为模块,编译时提示某个外部函数没有定义,但如果以<*>的方式编译进内核,则不会出错。请教下可能是什么原因?
  • 如何在linux下定义一个64位的整型变量,并进行输出,用GCC编译
  • Makefile,如何传递宏定义DEBUG?以便于程序编译或者跳过程序中#ifdef DEBUG中间的代码段?
  • 我想把大写转换成小写为什么我#include <string.h>后用strlwr()编译提示找不到strlwr()的定义?应该用什么函数呀?
  • GCC编译程序时,有自定义头文件,提示找不到该头文件,但他就在这个目录中,如何设置GCC参数?
  • 已经包含了unistd.h,gcc编译时仍报错未定义pid_t结构体
  • gcc中是否有VS编译器中预定义的类似__FUNCDNAME__宏??
  • xlc编译遇到重复定义
  • linux下编译程序通不过,提示libcurses.so:中有个啥没有定义。求高手指点
  • 如何去编译循环定义??
  • Socket程序--编译后提示未定义标识?
  • 最近看apue,程序4-10中,编译时,使用两个宏major和minor来访问主次设备号,没有定义是怎么回事,应该怎么解决呢?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 在jb6中,如何制作包含jdbc和自定义包的jar文件。
  • 请问:定义文件里需不需要用#include 将对应的头文件包含进来啊?
  • 一个包含文件引起的变量重复定义的问题,高手请援助!
  • 常用的各个头文件里都包含了些什么的定义?
  • java命名空间java.awt类radialgradientpaint的类成员方法: getradius定义及介绍
  • 请问可以用宏定义定义一个二维数组吗?
  • java命名空间javax.xml.stream类xmlinputfactory成员方法: seteventallocator定义参考
  • 想修改路径定义,想找到在哪里定义的,应该怎么办?
  • java命名空间java.text接口attributedcharacteriterator的类成员方法: getallattributekeys定义及介绍
  • php定义数组和使用示例(php数组的定义方法)
  • java命名空间java.beans接口propertyeditor的类成员方法: supportscustomeditor定义及介绍
  • 上次问题解决了,原来是extern被重定义了。。。天阿,关键字也可以被重定义。。。。。欢迎接分
  • java命名空间javax.swing类jtextarea的类成员方法: getcolumnwidth定义及介绍
  • 如何定义一个可变参数的自定义函数
  • java命名空间javax.swing类jtextfield的类成员方法: getcolumnwidth定义及介绍
  • 下面的变量我都下了定义,为什么还出现没定义的信息
  • java命名空间javax.swing类actionmap的类成员方法: allkeys定义及介绍
  • oracle异常(预定义异常,自定义异常)应用介绍
  • java命名空间javax.swing类inputmap的类成员方法: allkeys定义及介绍
  • 为什么我在头文件time.h里找不到time_t的定义呢?只有这个定义typedef __time_t time_t;
  • java命名空间javax.rmi.corba接口valuehandler的类成员方法: iscustommarshaled定义及介绍
  • 函数有定义怎么提示没有低能定义的错误呢?
  • java命名空间javax.swing类jcomponent的类成员方法: resetkeyboardactions定义及介绍
  • android自定义控件和自定义回调函数步骤示例
  • java命名空间java.beans接口customizer的类成员方法: setobject定义及介绍
  • 自定义公共类的装载,包的定义


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3