发布网友 发布时间:2022-04-21 07:04
共2个回答
热心网友 时间:2022-06-18 14:49
很简单啊。
c语言里面有写内置的宏,比如:
__FILE__ 当前文件的文件名
__LINE__ 当前代码的行号
__DATE__ 日期
__TIME__ 时间
__func__ 当前的函数名(这个很多编译器,还不一定支持)
至于要给出不同的原因,这个要靠你自己了。
热心网友 时间:2022-06-18 14:49
用函数指针 下面这个是编译通过的
#include "stdio.h"
#define _M(x,y) ;myoperate(x,y)
void play(char a[])
{
printf("我今天出去玩,因为%s\n",a);
}
void sleep(char a[])
{
printf("我今天想睡觉,因为%s\n",a);
}
void myoperate( void (*p)(char []),char a[])
{
p(a);
}
int main()
{
char a[20]="心情好";
char b[20]="天气好";
char c[20]="不舒服";
char d[20]="很累";
_M(play,a);
_M(play,b);
_M(sleep,c);
_M(sleep,d);
getchar();
return 0;
}
//
//下面的是不采用函数指针的
#include "stdio.h"
#include <string.h>
#define _M(x,y) ;myoperate(x,y)
void play(char a[])
{
printf("我今天出去玩,因为%s\n",a);
}
void sleep(char a[])
{
printf("我今天想睡觉,因为%s\n",a);
}
void myoperate(char a[],char b[])
{
if(strcmp(a,"出去玩"))
{
play(b);
}
else if(strcmp(a,"睡觉"))
{
sleep(b);
}
}
int main()
{
_M("出去玩","心情好");
_M("出去玩","天气好");
_M("睡觉","不舒服");
_M("睡觉","很累");
getchar();
return 0;
}