【发布时间】:2018-11-16 21:13:57
【问题描述】:
我试图从this question 编译以下代码,但编译失败:error C2059: syntax error: 'volatile'
#include<stdint.h>
#include<stdio.h>
static inline uint64_t rdtscp( uint32_t & aux )
{
uint64_t rax,rdx;
asm volatile ( "rdtscp\n" : "=a" (rax), "=d" (rdx), "=c" (aux) : : );
return (rdx << 32) + rax;
}
我使用 x64 msvc v19(WINE) 编译器,godbolt 上没有任何标志
【问题讨论】:
-
您希望
volatile在那里做什么? -
这似乎是 GCC 特有的语法。
-
这不是我的代码,正在尝试编译代码。另外我认为“volatile”用于避免编译器进行任何调度
-
是 C 还是 C++?
-
@NeilButterworth
volatile将阻止删除可访问的 asm 代码,即使其结果似乎没有在程序的其余部分中使用;它还可以防止它被语言级别的指令重新排序。
标签: c++ c compiler-errors