宏函数调用编译不了, 跪求大神指点

B_ice 发布于 2016/09/03 11:31
阅读 892
收藏 0
#include <stdio.h>
#include <time.h>
 
#define plog(fmt, args...) \
do\
{\
    time_t now = time(NULL);\
    tm *cur = localtime(&now);\
    printf("\n%02d:%02d:%02d->[%s %d]:"\
    fmt\
    "\n",cur->tm_hour,cur->tm_min,\
    cur->tm_sec,__func__,__LINE__,##args);\
    fflush(0);\
}while(0);

int main(int argc, char **argv)
{
    //去掉下面这句调用则编译通过,否则编译不通过为什么?
    plog("%s", __func__);
    return 0;
}
加载中
0
中山野鬼
中山野鬼

#define plog(fmt, args...)

这是什么鬼?反正不是“野鬼",哈。

为何不是 #define plog(fmt,args,...) 或者  #define plog(fmt,...)

0
宏哥
宏哥

引用来自“中山野鬼”的评论

#define plog(fmt, args...)

这是什么鬼?反正不是“野鬼",哈。

为何不是 #define plog(fmt,args,...) 或者  #define plog(fmt,...)

Luajit 尽量减少c使用 提高产出
0
郑闯
编译不过看编译错误是什么?
B_ice
B_ice
提示缺少定义,不过后面我把c文件改成cpp文件就ok,不知道为什么
0
v
vancy2011
宏函数已经是淘汰的东西了,建议少用。把这些调用宏函数的对象抽象成基类和子类,可以化简软件设计,降低调试复杂度。
0
gotham
gotham

c语言类型定义问题,tm 前加struct 就可以。

struct tm *cur = localtime(&now);\

c++编译不存在这个问题。

0
p
pkangel

  tm *cur = localtime(&now);  C里面没有这个东西  改为struct   tm *cur = localtime(&now);\

gcc可以编译并运行!

返回顶部
顶部