宏定义宏函数 if else语句报错:error: ‘else’ without a previous ‘if’(看似解决实际上没解决)

Posted Dontla

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了宏定义宏函数 if else语句报错:error: ‘else’ without a previous ‘if’(看似解决实际上没解决)相关的知识,希望对你有一定的参考价值。

代码

#include <stdio.h>
#include <stdlib.h>

#define ALOGE(...)  printf(__VA_ARGS__); printf("\\n"); 


#define fprintf(x, ...)  if(x==stderr) ALOGE(__VA_ARGS__);else fprintf(x, __VA_ARGS__); 

static void usage_tip(FILE *fp, int argc, char **argv) 
	fprintf(fp, "Usage: %s [options]\\n"
			"Version %s\\n"
			"Options:\\n"
			"-d | --debug    Debug option\\n"
			"-n | --no-mediaserver without mediaserver\\n"
			"-h | --help     For help \\n"
			"\\n",
			argv[0], "V1.0");



int main(int argc, char **argv)

   usage_tip(stderr, argc, argv);
   
   return(0);

ubuntu编译时报错

解决办法

真见鬼,代码应该是没问题的,因为我是从RXWbrcm_patchram_plus1.c抄过来的

然后我在if语句的后一句代码套上(或者去掉ALOGE(__VA_ARGS__);后的分号)就好了

#include <stdio.h>
#include <stdlib.h>

#define ALOGE(...)  printf(__VA_ARGS__); printf("\\n"); 


#define fprintf(x, ...)  if(x==stderr) ALOGE(__VA_ARGS__); else fprintf(x, __VA_ARGS__); 

static void usage_tip(FILE *fp, int argc, char **argv) 
	fprintf(fp, "Usage: %s [options]\\n"
			"Version %s\\n"
			"Options:\\n"
			"-d | --debug    Debug option\\n"
			"-n | --no-mediaserver without mediaserver\\n"
			"-h | --help     For help \\n"
			"\\n",
			argv[0], "V1.0");



int main(int argc, char **argv)

   usage_tip(stderr, argc, argv);
   
   return(0);

编译运行:

以上是关于宏定义宏函数 if else语句报错:error: ‘else’ without a previous ‘if’(看似解决实际上没解决)的主要内容,如果未能解决你的问题,请参考以下文章

函数和宏定义实验

C预处理器和C库

C++中怎样写宏定义

多个if else if语句的用法?

代码宏定义中使用循环语句

代码宏定义中使用循环语句