Tag: 编译器构造

结构填充编译标志

typedef struct{ char t1; long long t2; char t3; }struct_size_test; printf("sizeof(long long)==[%ld]\n", sizeof(long long)); printf("sizeof(char)==[%ld]\n", sizeof(char)); printf("sizeof(struct_size_test)==[%ld]\n", sizeof(struct_size_test)); iOS中和OS X gcc中的struct_size_test的结果是不同的。 在iOS中的结果是 sizeof(long long)==[8] sizeof(char)==[1] sizeof(struct_size_test)==[24] 但是OS X gcc的结果是 sizeof(long long)==[8] sizeof(char)==[1] sizeof(struct_size_test)==[16] 我GOOGLE了这个,并发现一些build议,添加“-malign-double”作为gcc编译标志。 但是它表明 clang: error: unknown argument: '-malign-double' [-Wunused-command-line-argument-hard-error-in-future] clang: note: this will be a hard error (cannot be downgraded to a warning) […]

编译警告关于丢失@required协议方法不出现

我今天早上在修改XCode 4.5.2,想要创build一个表格视图,我自然地将UITableViewDataSource和UITableViewDelegate协议添加到我的视图控制器定义上。 #import <UIKit/UIKit.h> @interface MyViewController : UIViewController <UITableViewDataSource, UITableViewDelegate> @end #import "MyViewController.h" @implementation MyViewController @end 现在我知道在这个阶段我需要实现UITableViewDataSource协议的@required方法,但是(大概是TDD)习惯,我决定首先执行一个构build,期望编译器会抛出关于未实现的@required方法的警告告诉我要执行哪些)。 但没有编译完成没有一个单一的错误或警告,从而使我感到困惑和稍微关注我。 所以我意识到这个问题通常是相反的,即“为什么我得到这个警告”,而不是“为什么我没有得到这个警告”,但这个非常简单的问题让我感到困惑。 显然我做错了,但我不知道是什么。 任何想法如何这可能是可能的? 仅供参考这是一个新的项目,没有构build/项目设置定制在全新的XCode 4.5.2干净的安装在一个新的Mac书。