在netbeans中编辑OpenCL

时间:2011-06-21 12:10:43

标签: c++ netbeans ide opencl

我最近在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看不到它,并且关键字可用。

3 个答案:

答案 0 :(得分:2)

为了使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

答案 1 :(得分:1)

这不是你想要的答案,但对于临时编辑,只需添加

等行
#define __kernel
#define __global
#define __local
#define __private

在cl文件的开头。这在Eclipse中有效。我认为它也适用于Netbeans。

缺点:您需要注意删除#define语句,否则代码将无效。

答案 2 :(得分:0)

你可以告诉netbeans的C编辑完全忽略语法错误,但我认为你不会有运气教授netbeans CL特定的关键词。

tools-> options-> C ++ - >构建工具

  • 复制工具配置
  • 为其命名并删除编译器的所有路径
  • 默认

工具 - >选项 - > C ++ - >高亮

  • 取消选中突出显示语法错误和未解析的标识符