我有以下由4.8.3编译的c ++源代码测试:
void setCanceling( const char* OrderNoptr ){
if( strcmp( BuyBook.OrderNo,OrderNoptr ) == 0 ){
BuyBook.seqno++ ;
asm volatile("":::"memory") ;
BuyBook.Canceling = 1 ;
asm volatile("":::"memory") ;
BuyBook.seqno++ ;
}
}
我不希望编译器优化器将源修改为:
void setCanceling( const char* OrderNoptr ){
register int r = BuyBook.seqno ;
if( strcmp( BuyBook.OrderNo,OrderNoptr ) == 0 ){
BuyBook.Canceling = 1 ;
r += 2 ;
}
BuyBook.seqno = r ;
}
可能asm volatile(“”:::“memory”)可以阻止编译器在我的测试中进行这样的修改吗?