首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >令人困惑的函数名

令人困惑的函数名
EN

Stack Overflow用户
提问于 2015-03-09 18:02:09
回答 1查看 178关注 0票数 0

我目前正致力于将一些代码从Visual移植到明威。编写组件的人不再可用,我对组件的细节也不太熟悉。目前,我遇到了一个问题,在这个问题上,“明”混淆了函数的名称和内部函数。代码是这样的

代码语言:javascript
运行
复制
 void _mm_prefetch(char const *_A, int _Sel); 

static FORCE_INLINE void sysdep_intrin_prefetch(void *ptr, cardinal_t offset)
{
  _mm_prefetch(REINTERPRET_CAST(const char *, cardinal_to_ptr(ptr_to_cardinal(ptr) + offset)),
           1 /* _MM_HINT_T0 */);
}

错误如下:

代码语言:javascript
运行
复制
||=== Build: Debug x64 in AVS_Wrapper (compiler: MinGW GCC - 2/17/2015) ===|
avs2\include\win32\aiw.h|247|error: variable or field '__builtin_prefetch' declared void|
avs2\include\win32\aiw.h|247|error: expected primary-expression before 'char'|
avs2\include\win32\aiw.h|247|error: expected ')' before 'char'|
avs2\include\win32\aaw64.h|13|error: expected unqualified-id before '__asm__'|
||=== Build failed: 4 error(s), 0 warning(s) (0 minute(s), 1 second(s)) ===|

这是我的建筑窗口

代码语言:javascript
运行
复制
g++.exe -std=c++11 -DWIN32 -D_DEBUG -D_WINDOWS -D_USRDLL -DAVS_WRAPPER_EXPORTS -DAVS_TARGET_WIN7 -std=c++11 -Iavs2\include\win32 -I..\..\..\..\mingw64\required\boost_1_57_0 -I. -IC:\Users\admin\gc3\avw -c C:\Users\admin\gc3\avw\avw.cpp -o "Win32\Debug x64\avw.o"
g++.exe -std=c++11 -DWIN32 -D_DEBUG -D_WINDOWS -D_USRDLL -DAVS_WRAPPER_EXPORTS -DAVS_TARGET_WIN7 -std=c++11 -Iavs2\include\win32 -I..\..\..\..\mingw64\required\boost_1_57_0 -I. -IC:\Users\admin\gc3\avw\wrapper -c C:\Users\admin\gc3\avw\wrapper\AvsSystem.cpp -o "Win32\Debug x64\wrapper\AvsSystem.o"
In file included from C:/mingw64/lib/gcc/x86_64-w64-mingw32/4.8.2/include/x86intrin.h:34:0,
                 from C:/mingw64/x86_64-w64-mingw32/include/winnt.h:1495,
                 from C:/mingw64/x86_64-w64-mingw32/include/minwindef.h:147,
                 from C:/mingw64/x86_64-w64-mingw32/include/windef.h:8,
                 from C:/mingw64/x86_64-w64-mingw32/include/windows.h:69,
                 from C:\Users\admin\gc3\avw\wrapper\AvsSystem.cpp:1:
avs2\include\win32/aiw.h:247:6: error: variable or field '__builtin_prefetch' declared void
 void _mm_prefetch(char const *_A, int _Sel);

显然,据我所知,编译器认为_mm_prefetch函数是__builtin_prefetch

我如何告诉编译器他们是不同的。我有什么办法可以回避这个问题呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-09 18:05:54

Mingw混淆了函数的名称和内部函数。

这是百分之百的权利这样做。语言规则(2.10p3)规定:

以下划线开头的每个标识符都保留给实现,以便用作全局命名空间中的名称。

不要将自己的函数命名为_mm_prefetch。(也就是说,要修复错误,必须重命名函数。)

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

https://stackoverflow.com/questions/28948796

复制
相关文章

相似问题

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