添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

先丢出一个炸弹:

#define kCurrentVersion [[[UIDevice currentDevice] systemVersion] intValue]
#if  kCurrentVersion >= 9
#endif

问题: invalid token at start of a preprocessor expression
大概意思:#if 的符号在预处理时无效

原因分析:
kCurrentVersion这个宏定义,要等到代码运行才会得到版本号,而#if属于条件编译,是在预处理阶段进行的。在预编译阶段,代码并未运行,无法获取到设备版本号,而导致在条件编译中kCurrentVersion并不是一个常量而出现问题。

解决方式:在条件编译中不使用代码运行时才生成的量即可。
如:

#define kCurrentVersion 9

编译、连接、运行 定义描述

先丢出一个炸弹:#define kCurrentVersion [[[UIDevice currentDevice] systemVersion] intValue]#if kCurrentVersion >= 9#endif问题:invalid token at start of a preprocessor expression 大概意思:#if 的符号在预处理时无效原因分析: kCu
1、如何区分 宏定义 中的“宏名称”和“宏字符串”?对于带参数的宏又该注意什么? 在 宏定义 中,“宏名称”和“宏字符串”是通过“空格”来区分的。 编译 器在处理时 宏定义 时,首先从“#define”后第一个空格开始读取字符串,直到遇见下一个空格为止,两个空格之间的字符串为“宏名称”,确定好“宏名称”之后,本行的所有其他字符串都为“宏字符串”。图示:#define + N个空格(1 < N) + 宏名称(中间没有空格) + N个空格(1 < N) + 宏字符串(直到本行结束)。这里讲到的都是一行之内的 宏定义 ,如果跨越多行则用“\”字符进行“续行”,本质上可以当做一行来对待。 对于“带参数宏”,宏名称和“(
#define XX_VERSION_MAJOR 1 // 主 版本 号 #define XX_VERSION_MINOR 1 // 副 版本 号 #define XX_VERSION_REVISION 1 // 修正... 心比天高,仗剑走天涯,保持热爱,奔赴向梦想!低调,谦虚,自律,反思,成长,还算是比较正能量的博主,公益免费传播……内心特别想在AI界做出一些可以推进历史进程影响力的东西(兴趣使然,有点小情怀,也有点使命感呀)…… 05-26
Fisher 判别 分析是一种常用的分类方法,通常用于将数据集分为两个或多个类别。在R语言中,可以 使用 `lda`函数来进行Fisher 判别 分析。 首先,我们需要准备数据集,假设我们有一个包含两个变量和一个类别变量的数据集,其中类别变量有两个类别。 # 生成示例数据 x1 <- rnorm(50, mean = 0, sd = 1) x2 <- rnorm(50, mean = 1, sd = 1) y <- rep(c("A", "B"), each = 25) data <- data.frame(x1, x2, y) 接下来,我们可以 使用 `lda`函数来进行Fisher 判别 分析,并 使用 `predict`函数来对新数据进行分类。 # 加载MASS包 library(MASS) # 进行Fisher 判别 分析 fit <- lda(y ~ x1 + x2, data = data) # 对新数据进行分类 newdata <- data.frame(x1 = c(0, 1), x2 = c(1, 0)) predict(fit, newdata) 这里的`lda`函数中,`y`表示类别变量,`x1`和`x2`表示用于分类的变量。`predict`函数中,`newdata`表示新的数据集,可以根据模型进行分类。