C ++ ключевые слова в коде CUDA C

Я использую 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.

4

Решение

NVCC компилирует код C ++, а не код C. Даже если он притворяется, что потребляет код C в реальности, вы просто получаете более похожее на C поведение, а не компилятор C (увидеть этот пост). По этой причине private является ключевым словом и не может использоваться как идентификатор (как любое другое ключевое слово C ++).

На самом деле --host-compilation C является осуждается (он не должен использоваться с nvcc), потому что в действительности он не делает то, что вы ожидаете.

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]