我正在编写我的对象第一个应用程序,我无法理解为什么编译器会出错。 (使用int代码工作......)
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
@autoreleasepool {
// 1st var
NSLog(@"Hi, %f World!", res(1.0f, 2.0f, 3.0f));
}
return 0;
}
float res (float a, float b, float c)
{
float res=a+b+c;
return res;
}
答案 0 :(得分:4)
尝试在main之前声明res
,以便编译器在main
中找到它时知道它。如果你事先没有声明,那么会发生什么:
编译器首次在res
正文中遇到main
;
它构成res
的“隐式声明”,基于它可以从res
内部调用main
的方式推断出来的内容;根据C惯例,这意味着int
返回类型;
当稍后发现真实的res
时,推断的签名(即返回类型)与真实签名之间的不匹配会触发编译错误。
修复它:
float res (float a, float b, float c);
int main(int argc, const char * argv[])
{
@autoreleasepool {
// 1st var
NSLog(@"Hi, %f World!", res(1.0f, 2.0f, 3.0f));
}
return 0;
}
float res (float a, float b, float c)
{
float res=a+b+c;
return res;
}
答案 1 :(得分:1)
你只是忘记声明功能,只需输入
float res (float a, float b, float c);
在int main
之前
希望它可以帮到你!
答案 2 :(得分:0)
尝试:
#import <Foundation/Foundation.h>
float res (float a, float b, float c)
{
float res=a+b+c;
return res;
}
int main(int argc, const char * argv[])
{
@autoreleasepool {
// 1st var
NSLog(@"Hi, %f World!", res(1.0f, 2.0f, 3.0f));
}
return 0;
}