首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >clang和__rdtscp:这是什么,错误是什么

clang和__rdtscp:这是什么,错误是什么
EN

Stack Overflow用户
提问于 2014-05-03 06:20:29
回答 2查看 5.1K关注 0票数 0

克朗决定给我一个错误。它决定斥责我使用__rdtscp (这不是我的代码,我不知道那是什么)

代码语言:javascript
复制
 error: use of undeclared identifier '__rdtscp'
                        i2 = __rdtscp(&ui2);
                             ^
 error: use of undeclared identifier '__rdtscp'
                        i3 = __rdtscp(&ui3);
                             ^
 error: use of undeclared identifier '__rdtscp'
                        i2 = __rdtscp(&ui2);
                             ^
 error: use of undeclared identifier '__rdtscp'
                        i3 = __rdtscp(&ui3);
                             ^
 error: use of undeclared identifier '__rdtscp'
                i2 = __rdtscp(&ui2);
                     ^
 error: use of undeclared identifier '__rdtscp'
                i3 = __rdtscp(&ui3);

我真的很想弄清楚为什么阿郎不喜欢我。有人知道__rdtscp是什么吗?我怎么才能让clang冷静下来呢?

EN

回答 2

Stack Overflow用户

发布于 2014-05-03 08:45:04

假设您正在为x86编译,那么有一个__rdtscp内置函数。如果您正在为其他处理体系结构编译,它将不可用,因为rdtscp基本上是x86指令的名称。

这段代码适用于我,从昨天开始使用clang++ 3.5.0:

代码语言:javascript
复制
#include <iostream>
#include <x86intrin.h>

int main()
{
    unsigned int dummy;
    unsigned long long t1 = __rdtscp(&dummy);
    std::cout << "Hello" << std::endl;

    unsigned long long t2 = __rdtscp(&dummy);
    std::cout << "Time: " << t2 - t1 << std::endl;
}

您需要包含x86intrin.h,以便将__rdtscp转换为编译器知道的实际__builtin_ia32_rdtscp函数。

票数 3
EN

Stack Overflow用户

发布于 2014-05-03 06:34:46

RDTSCP on some platforms是RDTSCP指令的固有编译器,RDTSCP指令是最近引入的RDTSC (“读取时间戳计数器”)的序列化版本,用于计算处理器周期数,例如在基准测试或计时器代码中。

Here is a way是在使用gcc时,在C或C++中使用rdtscp()的一种方法。也许同样的方法也适用于Clang?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23437796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档