2012-10-11 114 views
0

當Makefile嘗試編譯.cu(CUDA)文件時,會生成此錯誤。編譯錯誤:g ++ - v4/tr1_impl/type_traits(226):錯誤:預期標識符

我們可以自己編譯這個.hpp是專門爲它編寫的.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 ">" 

是否有可能有一個.CU單.HPP和背後有一個.cpp?

+1

是的,但如果.hpp包含nvcc無法構建的文件,則無法將其包含在.cu中。你可以在這些文件周圍使用'#ifndef __CUDACC__',這樣在使用nvcc編譯.cu時就不會包含它們。 – harrism

+0

你能提供一個列表,包括你在編譯失敗的文件中包含的#includes,以及編譯命令行嗎? – harrism

+1

@harrism - (+1)你是完全正確的。讓你的評論一個正確的答案,我會給你點頭。 – Zak

回答

1

是的,它是可能的,而且事實上很常見,但如果.hpp包含nvcc無法構建的文件,則無法從.cu中包含它。

您可以在這些文件周圍使用#ifndef __CUDACC__,這樣在使用nvcc編譯.cu時不會包含它們。