gpt4 book ai didi

c++ - 编译器提示 volatile 关键字

转载 作者:搜寻专家 更新时间:2023-10-31 02:04:32 26 4
gpt4 key购买 nike

我试图从 this 编译以下代码问题,编译失败: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;
}

我在 godbolt 上使用没有任何标志的 x64 msvc v19(WINE) 编译器|

最佳答案

asm volatile 是一个 GNU 扩展。限定符是 documented here .

对于 MSVC,使用 __rdtscp intrinsic相反。


另请注意,您可以在所有主要编译器中使用内在函数,例如:

#include <iostream>
#include <cstdint>

#ifdef _WIN32
# include <intrin.h>
#else
# include <x86intrin.h>
#endif

int main()
{
uint64_t i;
uint32_t ui;
i = __rdtscp(&ui);
std::cout
<< "Ticks: " << i << '\n'
<< "TSC_AUX: " << ui << '\n'
;
return 0;
}

关于c++ - 编译器提示 volatile 关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53345462/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com