称为对象类型';int';不是xcode中的函数指针或函数指针

称为对象类型';int';不是xcode中的函数指针或函数指针,c,xcode,C,Xcode,我创建了如下宏 #define log printf("(%s):(%d) ",__FUNCTION__, __LINE__);printf 我在日志记录的主要功能中使用它 log("Hello world\n"); 它导致运行时错误为“lldb”。 IDE中显示错误“调用的对象类型'int'不是x代码中的函数或函数指针”请尝试: #define LOG( s ) printf( "(%s):(%d)%s\n", __FUNCTION__, __LINE__, s ); 当你说“如果我

我创建了如下宏

#define log printf("(%s):(%d)  ",__FUNCTION__, __LINE__);printf
我在日志记录的主要功能中使用它

log("Hello world\n"); 
它导致运行时错误为“lldb”。 IDE中显示错误“调用的对象类型'int'不是x代码中的函数或函数指针”

请尝试:

#define LOG( s ) printf( "(%s):(%d)%s\n", __FUNCTION__, __LINE__, s );
当你说“如果我提出论点,它就会失败”时,也许你想要这样的东西:

#include <stdio.h>

#define LOG( FormatString, ... ) printf( "(%s:%d)" FormatString "\n", __FUNCTION__, __LINE__, __VA_ARGS__ )

int main(int argc, const char * argv[])
{
    int i = 16;

    LOG( "i = %d", i );

    LOG( "Hello World", NULL );

    return 0;
}
#包括
#定义日志(FormatString,…)printf((%s:%d)“FormatString”\n“,\u函数\u函数,\u行\u函数,\u变量\u函数)
int main(int argc,const char*argv[]
{
int i=16;
日志(“i=%d”,i);
日志(“Hello World”,空);
返回0;
}

注意:
log
()已被用作标准库的名称。如果我在printf中只给出字符串,则它可以工作,但如果我给出参数,则会失败,并出现错误“可能是我们缺少参数,为宏调用之类的函数提供了太多参数”@anilkumar不确定您的意思。上面的宏定义应该按原样工作,并且应该像这样使用:LOG(“Hello World”)\n将由宏添加。35;包括#define LOG(s)printf((%s):(%d)%s\n“,函数,行,s);intmain(){intx=10;LOG(“helloworld:%d”,x);}结果:(main):(7)helloworld:%d,但我期待着:(main:8)helloworld:10(第一个解决方案给出了预期的结果)谢谢Ron,这正是我所期望的。