本着与诸如“x = ++x”之类的序列点相关的未定义行为的精神,它真的是未定义的吗?,如何让编译器抱怨这样的代码?
具体来说,我正在使用 Visual Studio 2010 和 Xcode 4.3.1,后者用于 OSX 应用程序,但都没有警告我这一点。我什至将 VS2010 上的警告调高为“全部”,它愉快地编译了这个。(作为记录,VS2010 的版本在变量中添加了 1,而 Xcode 的版本保持变量不变。)
本着与诸如“x = ++x”之类的序列点相关的未定义行为的精神,它真的是未定义的吗?,如何让编译器抱怨这样的代码?
具体来说,我正在使用 Visual Studio 2010 和 Xcode 4.3.1,后者用于 OSX 应用程序,但都没有警告我这一点。我什至将 VS2010 上的警告调高为“全部”,它愉快地编译了这个。(作为记录,VS2010 的版本在变量中添加了 1,而 Xcode 的版本保持变量不变。)