繁体   English   中英

将浮点值从目标C传递到C ++方法

[英]Passing float values from objective C to C++ methods

我正在从Objective C调用C ++方法。我需要传递一个float值作为参数。 这是代码:

C ++方法:

void printValue(float a){ 
         NSLog(@"Value of a: %5.2f",a);  // I am using NSLog here. It works
}

我在c ++文件中有指令extern“ C”。 还对C ++文件使用.mm扩展名

我从Objective C类中调用此方法,如下所示:

printValue(3.1); // 3.1 is a sample value

我得到a的Value of a: 0.00 如果我将(float a)更改为(double a) ,则得到正确的值3.10。

我尝试在调用时将值强制转换为浮点型:

printValue((float)3.1);

这也给0.00

我该怎么解释?

C的调用约定说,将参数传递给可变参数函数(参数列表末尾带有...的NSLog之类的函数)时,每个float必须转换为double并传递。

我希望C ++并非如此(但我真的不知道)。 无论如何,由于NSLog期望所有浮点类型都是double,因此显式进行转换是最安全的:

NSLog(@"Value of a: %5.2f", (double)a);

另一个想法:如果编译器说了关于NSLog的缺少函数声明的问题,则问题可能还在于它没有执行转换,以可变参数表示的预期double ,因为它看不到函数的声明。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM