Я использую CUDA для ускорения некоторых частей C-программы. Эта программа использует некоторые ключевые слова C ++ в качестве идентификаторов, поэтому она не компилируется как C ++. Теперь, когда я изменил его с помощью CUDA, как я могу скомпилировать его с помощью NVCC?
Например, я получаю ошибку:
table.h(65): error: expected an identifier
при компиляции кода:
struct sw_table_position {
unsigned long private[4];
};
Который является совершенно допустимым C, но недействительным C ++. Я использую CUDA 5.
NVCC компилирует код C ++, а не код C. Даже если он притворяется, что потребляет код C в реальности, вы просто получаете более похожее на C поведение, а не компилятор C (увидеть этот пост). По этой причине private
является ключевым словом и не может использоваться как идентификатор (как любое другое ключевое слово C ++).
На самом деле --host-compilation C
является осуждается (он не должен использоваться с nvcc), потому что в действительности он не делает то, что вы ожидаете.
Других решений пока нет …