编译错误:g ++ - v4 / tr1_impl / type_traits(226):错误:预期标识符

时间:2012-10-11 22:04:31

标签: c++ cuda gpu

当Makefile尝试编译.cu(CUDA)文件时会生成错误。

我们能够通过专门为它编写的.hpp来编译它。当我们试图让它在现有的头文件下编译时,它有自己的.cpp(换句话说.hpp,.cpp加上.cu),我们不断得到这个奇怪的编译错误。

为了便于阅读,所有以下消息都以此目录为前缀:

/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.4/include/g++-v4/tr1_impl/

消息:

type_traits(226): error: expected an identifier
type_traits(227): error: expected a ")"
type_traits(227): error: a template argument list is not allowed in a declaration of a primary template

type_traits(229): error: expected an identifier
type_traits(230): error: expected a ")"
type_traits(230): error: a template argument list is not allowed in a declaration of a primary template

type_traits(232): error: expected an identifier
type_traits(233): error: expected a ")"
type_traits(233): error: expected a ">"

type_traits(235): error: expected an identifier
type_traits(236): error: expected a ")"
type_traits(236): error: expected a ">"

type_traits(238): error: expected an identifier
type_traits(239): error: expected a ")"
type_traits(239): error: expected a ">"

type_traits(241): error: expected an identifier
type_traits(242): error: expected a ")"
type_traits(242): error: expected a ">"

type_traits(244): error: expected an identifier
type_traits(245): error: expected a ")"
type_traits(245): error: expected a ">"

type_traits(247): error: expected an identifier
type_traits(248): error: expected a ")"
type_traits(248): error: expected a ">"

是否可以使用单个.hpp和.cu以及.cpp?

1 个答案:

答案 0 :(得分:1)

是的,这是可能的,事实上很常见,但是如果.hpp包含nvcc无法构建的文件,那么你就不能从.cu中包含它。

您可以在这些文件周围使用#ifndef __CUDACC__,因此在使用nvcc编译.cu时不会包含它们。