sha*_*oth 1 c++ compiler-construction pragma visual-studio visual-c++
我正在将我的C++代码库从Visual Studio 2k3移动到Visual Studio 2k8.代码包含
#pragma optimize( "a", on )
Run Code Online (Sandbox Code Playgroud)
MSDN表示它意味着"假设没有别名".更高版本的VS拒绝编译这个,MSDN似乎没有说明如何处理包含此#pragma的代码.
什么"假设没有别名"意味着什么以及如何决定如何处理这行代码?
小智 5
别名是你有这样的东西:
int a[100];
int * p1 = &a[50];
int * p2 = &a[52];
Run Code Online (Sandbox Code Playgroud)
现在a,p1和p2都是数组的别名或部分别名.这种情况可能会阻止编译器生成最佳的数组访问代码(FORTRAN禁止它,这就是为什么它的数组性能非常好).
你问的pragma说,编译器可以假设上述情况不存在.显然,如果你需要决定是否需要这个,你可以做以下两件事之一:
这是你的选择 :-)