gpt4 book ai didi

iphone - objective-c : Using #define constant values in math expressions

转载 作者:太空狗 更新时间:2023-10-30 03:56:02 26 4
gpt4 key购买 nike

我是 iPhone 开发的新手,我只是在尝试一些简单的绘图例程,但我在使用简单数学中定义的值时遇到了问题。

我有这样一行:

int offset = (((myValue - min_value) * 6) - middle);

这很好用——但我不喜欢在其中使用硬编码的 6(因为我会在很多地方使用它。

所以我想我应该使用#define 定义一个常量:

#define WIDTH_OFFSET 6;

然后我可以使用:

int offset = (((myValue - min_value) * WIDTH_OFFSET) - middle);

但是 - 这会导致编译器错误:“预期的表达式。”

我可以通过将计算分解成几行来解决这个问题:

int offset = myValue - min_value;
offset = offset * WIDTH_OFFSET;
offset = offset - middle;

编译器认为这很好。

我猜这里有一些隐式转换或其他一些语言功能在起作用 - 谁能向我解释发生了什么?

最佳答案

去掉#define后的分号;:

#define WIDTH_OFFSET 6

#define 按字面替换其参数,因此预处理后的表达式变为

(((myValue - min_value) * 6;) - middle);

可以看到,表达式中间有一个分号,这是一个语法错误。

另一方面,你的另一个表情

int offset = myValue - min_value;
offset = offset * WIDTH_OFFSET;

不会出现这样的问题,因为在一行中有两个分号

 offset = offset * 6;;

在句法上是有效的。

关于iphone - objective-c : Using #define constant values in math expressions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8970625/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com