我最近在StackOverflow上读到一个关于IDE的问题,因为我一直是emacs用户,所以我决定尝试其中一个IDE,即用于编辑C++的netbeans。这太好了,我有点忘乎所以,想把OpenCL文件编辑成
现在是我的问题。我已经设置了netbeans来处理像C文件这样的opencl源文件,但这会导致一个问题。__kernel关键字使语法检查器的行为非常奇怪。
有人知道如何让netbeans忽略特定(*.cl)文件中的关键字吗?
以下解决方案看起来很有效:
#ifndef tan
#define __kernel
#define __global
#define __local
#define __private
#define get_global_id
#define get_global_size
#define get_local_id
#define get_local_size
#define barrier
#endif
由于tan是在没有头的情况下定义的,所以netbeans看不到它,并且关键字是可用的。
为了使netbeans忽略关键字,您可以在项目的代码辅助选项中的预处理器定义条目中定义ONLY_DEFINED_IN_NETBEANS
,而不在其他地方定义它。然后可以将您的代码修改为
#ifdef ONLY_DEFINED_IN_NETBEANS
#define __kernel
#define __global
#define __local
#define __private
#define get_global_id
#define get_global_size
#define get_local_id
#define get_local_size
#define barrier
#endif
netbeans解析器将忽略这些关键字。
同样的技巧也可以作为补丁应用于__restrict__
关键字上netbeans中报告的错误:
#ifdef ONLY_DEFINED_IN_NETBEANS
#define __restrict__
#define restrict
#endif
这不是你想要的答案,但对于临时编辑,只需放置类似的行
#define __kernel
#define __global
#define __local
#define __private
在cl文件的开头。这是在Eclipse中工作的。我认为它在Netbeans中也会起作用。
缺点:您需要注意删除#define
语句,否则代码将无法工作。
你可以告诉netbeans的C编辑器完全忽略语法错误,但我认为你不会幸运地教netbeans CL特定的关键字。
工具->选项->C++->构建工具
- 复制工具配置
- 给它一个名称并删除编译器的所有路径
- 使其默认
工具->选项->C++->突出显示
- 取消选中突出显示语法错误和未解析的标识符