define宏定义

#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <string.h>
#include <signal.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <linux/capability.h>

#define GETARG(a,x) (a->x##_arg)


static int debug = 0;


#define __die(condition,format,...) do { \
                                        if(condition) {\
                                            fprintf(stderr,"[error:%04d] ", __LINE__);\
                                            fprintf(stderr, format "\n", ##__VA_ARGS__ ); \
                                            exit(1);\
                                        } \
                                    } while(0)


#define __fail(format,...) __die(1,format,##__VA_ARGS__)


#define __abort(r,condition,format,...) do { \
                                            if(condition) {\
                                                fprintf(stderr,"[error:%04d] ", __LINE__);\
                                                fprintf(stderr, format "\n", ##__VA_ARGS__ ); \
                                                return r;\
                                            } \
                                        } while(0)


#define __debug(format,...) do { \
                                if(debug){\
                                    fprintf(stdout,"[debug:%04d] ", __LINE__);\
                                    fprintf(stdout, format "\n", ##__VA_ARGS__ ); \
                                } \
                            } while(0)


#define __error(format,...) do { \
                                fprintf(stderr,"[error:%04d] ", __LINE__);\
                                fprintf(stderr, format "\n", ##__VA_ARGS__ ); \
                            } while(0)

原文地址:https://www.cnblogs.com/BloodAndBone/p/1921680.html