当前位置: 技术问答>linux和unix
aix53中宏中使用可变参数的问题
来源: 互联网 发布时间:2016-09-29
本文导语: 我在job_exception.h中定义了如下函数: __cdecl JobSchedulerException(JobSchedulerExceptionType exception_type, int error_code, const char* throw_filename,int throw_line,const char* msg_format , ...); 同时定义了如下宏: #define ThrowException(enum_exc...
我在job_exception.h中定义了如下函数:
__cdecl JobSchedulerException(JobSchedulerExceptionType exception_type,
int error_code, const char* throw_filename,int throw_line,const char* msg_format
, ...);
同时定义了如下宏:
#define ThrowException(enum_exception_type,error_code,err_msg,...) {
throw ECIFPB::JobSchedulerException(enum_exception_type,(int)err
or_code,__FILE__,__LINE__,err_msg,##__VA_ARGS__);}
在其它.cc文件中使用ThrowException(my_type,errno,"错误信息");时报错误:
Too few arguments are specified for macro "ThrowException". Empty arguments are used.
为什么呢?
__cdecl JobSchedulerException(JobSchedulerExceptionType exception_type,
int error_code, const char* throw_filename,int throw_line,const char* msg_format
, ...);
同时定义了如下宏:
#define ThrowException(enum_exception_type,error_code,err_msg,...) {
throw ECIFPB::JobSchedulerException(enum_exception_type,(int)err
or_code,__FILE__,__LINE__,err_msg,##__VA_ARGS__);}
在其它.cc文件中使用ThrowException(my_type,errno,"错误信息");时报错误:
Too few arguments are specified for macro "ThrowException". Empty arguments are used.
为什么呢?
|
试试加xlc++的编译选项:
-qlanglvl=gnu_varargmacros
-qlanglvl=gnu_varargmacros
|
这个跟gcc的版本有关, 通常做法如下:
#if defined(__GNUC__) && (__GNUC__
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。