所以我正在开发一个非常大的代码库,最近升级到gcc 4.3,它现在触发了这个警告:
警告:不推荐将字符串常量转换为'char*'
显然,解决这个问题的正确方法是找到每个声明
char *s = "constant string";
Run Code Online (Sandbox Code Playgroud)
或函数调用如:
void foo(char *s);
foo("constant string");
Run Code Online (Sandbox Code Playgroud)
并使他们成为const char指针.但是,这意味着触及564个文件,最小,这不是我希望在此时执行的任务.现在的问题是我正在运行-werror,所以我需要一些方法来扼杀这些警告.我怎样才能做到这一点?
与Ben Gottlieb提出的问题类似,我有一些不赞成的电话让我烦恼.有没有办法按线抑制警告?例如:
if([[UIApplication sharedApplication]
respondsToSelector:@selector(setStatusBarHidden:withAnimation:)]) {
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];
} else {
[[UIApplication sharedApplication] setStatusBarHidden:YES animated:NO]; //causes deprecation warning
}
Run Code Online (Sandbox Code Playgroud)
我所关心的只是那条线.我不想关闭所有弃用警告.我也不愿意做一些像文件一样抑制特定警告的事情.
在其他一些情况下,即使编译器生成警告,我也希望将特定行标记为正常.我本质上想让我的团队知道问题已经处理完毕,并且一遍又一遍地停止对同一行进行窃听.
我正在从iOS6迁移到iOS7,但我想保留适用于iOS6的代码,所以我的代码如下所示:
if (isiOS7orAbove) {
sizeios7 = [text boundingRectWithSize:CGSizeMake(TEXTVIEW_WIDTH, 9999)
options:NSStringDrawingUsesLineFragmentOrigin
attributes:nil context:nil];
}else{
size = [text sizeWithFont:[self cellFont]
constrainedToSize:CGSizeMake(TEXTVIEW_WIDTH, 9999)
lineBreakMode:NSLineBreakByWordWrapping];
}
Run Code Online (Sandbox Code Playgroud)
但是Xcode一直警告我[text sizeWithFont...]不赞成.现在,因为我确信我的旗帜isiOS7orAbove可以处理iOS版本所以我不需要警告,因为我已经处理过它.
我不想真的禁用有关弃用方法的警告,我想要的是告诉Xcode我已经处理它,应该适用于较低版本的iOS.
那么有可能只删除[text sizeWithFont ...]的警告吗?
我想一个叫宏的东西应该这样做,#IF IOS6但我不确切知道如何.
c++ ×1
deprecated ×1
gcc ×1
ios ×1
iphone ×1
macros ×1
objective-c ×1
string ×1
warnings ×1
xcode ×1