错误处理 – Xcode:如何配置项目以使最严格的编译器设置成为可能?

错误处理 – Xcode:如何配置项目以使最严格的编译器设置成为可能?,第1张

概述有时,由于程序员的编译器,语言或运气的精确性,程序员可能会使用一些相当邋code的代码.为了产生最干净的构建,我想配置我的 Xcode设置来抱怨最轻微的怀疑不当. 根据您的经验,您会建议什么? 以下是我的想法,但还有更多吗? 我在我的代码库中使用这样的东西(制作一个xcconfig).它有点过时(部分用于工具集兼容性),但通常与使用Xcode的gcc4.2和clang的c,c,objc,objc兼 有时,由于程序员的编译器,语言或运气的精确性,程序员可能会使用一些相当邋code的代码.为了产生最干净的构建,我想配置我的 Xcode设置来抱怨最轻微的怀疑不当.

根据您的经验,您会建议什么?

以下是我的想法,但还有更多吗?

解决方法 我在我的代码库中使用这样的东西(制作一个xcconfig).它有点过时(部分用于工具集兼容性),但通常与使用Xcode的gcc4.2和clang的c,c,objc,objc兼容:

GCC_TREAT_IMPliCIT_FUNCTION_DECLaraTIONS_AS_ERRORS = YESGCC_TREAT_NONCONFORMANT_CODE_ERRORS_AS_WARNINGS = YESGCC_TREAT_WARNINGS_AS_ERRORS = NOGCC_WARN_64_TO_32_BIT_CONVERSION = YESGCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = YESGCC_WARN_ABOUT_GLOBAL_CONSTRUCTORS = YESGCC_WARN_ABOUT_INVALID_OFFSetoF_MACRO = YESGCC_WARN_ABOUT_MISSING_FIELD_INITIAliZERS = YESGCC_WARN_ABOUT_MISSING_NEWliNE = YESGCC_WARN_ABOUT_MISSING_PROTOTYPES = YESGCC_WARN_ABOUT_POINTER_SIGNednESS = YESGCC_WARN_ABOUT_RETURN_TYPE = YESGCC_WARN_ALLOW_INCOMPLETE_PROTOCol = YESGCC_WARN_CHECK_SWITCH_STATEMENTS = YESGCC_WARN_EFFECTIVE_CPLUSPLUS_VIolATIONS = YESGCC_WARN_FOUR_CHaraCTER_CONSTANTS = YESGCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = YESGCC_WARN_INHIBIT_ALL_WARNINGS = NOGCC_WARN_INITIAliZER_NOT_FulLY_BRACKETED = YESGCC_WARN_MISSING_PARENTHESES = YESGCC_WARN_NON_VIRTUAL_DESTRUCTOR = YESGCC_WARN_PEDANTIC = YESGCC_WARN_SHADOW = YESGCC_WARN_SIGN_COMPARE = YESGCC_WARN_STRICT_SELECTOR_MATCH = YESGCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YESGCC_WARN_UNDECLARED_SELECTOR = YESGCC_WARN_UNKNowN_PRAGMAS = YESGCC_WARN_UNUSED_FUNCTION = YESGCC_WARN_UNUSED_LABEL = YESGCC_WARN_UNUSED_ParaMETER = YESGCC_WARN_UNUSED_VALUE = YESGCC_WARN_UNUSED_VARIABLE = YES// this gets sloppyWARNING_CFLAGS = -Waddress -Woverflow -Winline -pedantic -Wundef -Wstrict-overflow -Wstrict-overflow=4 -Wsequence-point -Wdeprecated-declarations -Wendif-labels -Winit-self -Wstrict-aliasing=2 -Wstrict-aliasing -Wextra -Wcast-align -Wcast-qual -Wchar-subscripts -Wcomment -Wconversion -Wfloat-equal -Wformat -Wformat=2 -Wformat-extra-args -Wformat-security -Wimplicit -Winit-self -WinvalID-pch -Wmissing-braces -Wmissing-fIEld-initializers -Wmissing-format-attribute -Wmultichar -Wparentheses -Wpointer-arith -Wredundant-decls -Wreturn-type -Wsequence-point -Wshadow -Wstack-protector -Wsign-compare -Wswitch -Wswitch-default -Wswitch-enum -Wtrigraphs -Wundef -WunkNown-pragmas -Wunused -Wunused-function -Wunused-label -Wunused-parameter -Wunused-value -Wunused-variable -Wwrite-strings -Wvariadic-macros -Winline -Wformat-nonliteral $(inherited)WARNING_CPLUSPLUSFLAGS = -Wno-long-long -Waddress -Woverflow -Winline -Wno-non-virtual-dtor -pedantic -Wundef -Wstrict-overflow -Wstrict-overflow=4 -Wsequence-point -Wdeprecated-declarations -Wendif-labels -Winit-self -Wstrict-aliasing=2 -Wstrict-aliasing -Wextra -Wcast-align -Wcast-qual -Wchar-subscripts -Wcomment -Wconversion -Wfloat-equal -Wformat -Wformat=2 -Wformat-extra-args -Wformat-security -Wimplicit -Winit-self -WinvalID-offsetof -WinvalID-pch -Wmissing-braces -Wmissing-fIEld-initializers -Wmissing-format-attribute -Wmultichar -Wparentheses -Wpointer-arith -Wredundant-decls -Wreturn-type -Wsequence-point -Wshadow -Wstack-protector -Wsign-compare -Wswitch -Wswitch-default -Wswitch-enum -Wtrigraphs -Wundef -WunkNown-pragmas -Wunused -Wunused-function -Wunused-label -Wunused-parameter -Wunused-value -Wunused-variable -Wwrite-strings -Wvariadic-macros -Wreorder -Weffc++ -Wdeprecated -Woverloaded-virtual -Wsign-promo -Wold-style-cast -Winline -Wformat-nonliteral $(inherited)// not categorized as a warning,but will enable warningsGCC_STRICT_AliASING = YES// Apple headers are too much for thisGCC_WARN_MulTIPLE_DEFinitioN_TYPES_FOR_SELECTOR = NO// useful for some output (conversions),but useless for the other half (implicit conversions which do not apply to c++). clang covers many of the cases with its warnings.GCC_WARN_PROTOTYPE_CONVERSION = NO// Disabled by default - *do* enable in optimized configurationsGCC_WARN_UNINITIAliZED_autoS = NO// clang-ana:CLANG_ANALYZER_DEADCODE_DEADSTORES = YESCLANG_ANALYZER_DEADCODE_IDEMPOTENT_OPERATIONS = YESCLANG_ANALYZER_OBJC_SELF_INIT = YES

如果你已经放弃了gcc,那么你可以删除许多clang不支持的内容. clang有自己的一些选项(因你使用的发行版而异).

总结

以上是内存溢出为你收集整理的错误处理 – Xcode:如何配置项目以使最严格的编译器设置成为可能?全部内容,希望文章能够帮你解决错误处理 – Xcode:如何配置项目以使最严格的编译器设置成为可能?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1000158.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存