Cur*_*ous 3 c++ x86 assembly arm
asm()在未使用但不受支持的架构中,代码块的行为是什么?例如,如果我在ARM上编译以下代码会发生什么
if (false) {
asm volatile("x86specificinstruction" ...);
}
Run Code Online (Sandbox Code Playgroud)
这是有效的C++吗?代码会编译吗?标准是否对此类情况有所说明?
这取决于如何处理它.来自[dcl.asm]
一个
asm声明的形式Run Code Online (Sandbox Code Playgroud)asm-definition: attribute-specifier-seq opt asm ( string-literal ) ;该
asm声明得到有条件的支持; 它的含义是实现定义的.asm-definition中的可选attribute-specifier-seq属于asm声明.[注意:通常用于将信息通过实现传递给汇编程序. - 结束说明]
强调我的
那说你可以把代码放在一个#if #endif,使用SFINAE,或使用if constexpr.如果条件不满足,所有这些都将删除编译代码.
| 归档时间: |
|
| 查看次数: |
93 次 |
| 最近记录: |