|
13
|
| Ben Packard Ross Knipe · 技术社区 · 16 年前 |
|
|
1
10
我认为这是GCC4.2.1的缺陷。
我做了这个文件
注意,在64位模式下,可以忽略实例变量。 我在OS X 10.6.3上的GCC 4.2.1给出了一个错误:
这个编译没有问题,通过更改
到
Clang编译它没有任何问题。 (在32位模式下,我
正如曼朱纳特所写,这是一种完全可以预料的行为。) 然而 我认为访问超类的实例变量通常是一个相当糟糕的主意:当您实现方法超类时,不能对实例变量进行任何假设,因为子类可能以最糟糕的方式对它进行了调整。您至少需要写下允许或不允许对实例变量执行哪种操作…记住,您可能需要将代码维护多年!我更喜欢在方法和属性级别上保持代码各个部分之间的编程契约。 最后你应该改变
到
或者至少
如果您没有在OS X上使用GC,否则exp-bad-access将等待您! |
|
|
2
1
我想你只是有个打字错误-应该是“teststring”而不是“test” |
|
|
3
1
我在看
编辑: 在GCC4.2中,如果您将testb.h更改为以下内容,它将起作用:
但是,使用clang llvm编译器,代码工作时不会被修改。也许这是一个要归档的bug。 |
|
|
4
1
我刚刚遇到了同样的问题,但是来源非常复杂,我不太明白当我使用gcc时,是什么让父级的ivar无法访问。我只知道几个月前,在我的代码发生变化之前,它是有效的,而且它是与clang一起工作的,我已经用了一段时间了。突然间,我不得不用GCC来建造,但它不会再有了。 至少这篇文章给了我一个旁路(声明IVARS)。我很惊讶Xcode的最新版本没有包含一个固定的编译器 |
|
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 1 年前 |
|
|
MysteryMoose · GCC下故意忽略初始化器警告中的过量元素 1 年前 |
|
|
Ken P · 如何利用[*]printf格式类型规范警告? 1 年前 |
|
fghoussen · 在C结构体中,为什么打包、对齐似乎会进行填充? 1 年前 |
|
|
adversarr · 全局变量何时导出到可执行文件? 1 年前 |