Как заставить визуальную студию распознавать определенные ключевые слова

Я использую cuda в C++, компилятор cuda «понимает» определенные ключевые слова (например, Глобальный), но подсветка синтаксиса Visual Studio распознает эти ключевые слова как ошибки, хотя это ничего не ломает, это довольно раздражает.

есть ли способ заставить визуальную студию распознать эти ключевые слова (не нужно их переопределять, просто заставьте визуальную студию понять, что они существуют).


__global__ void func(int* a, int* b)
{
    int place = blockIdx.x * blockDim.x + threadIdx.x;
        ///more code
}

Под «ошибками» вы подразумеваете красное морщинистое подчеркивание Intellisense? Также есть раскрашивание ключевых слов, и это другой механизм.

MSalters 20.05.2019 14:31

@MSalters да, и ошибка на вкладке «ошибки».

user10780898 20.05.2019 14:44
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Проблема здесь в задействованных компиляторах. Visual Studio имеет довольно умный редактор с так называемой функциональностью Intellisense. Этот редактор включает в себя настоящий компилятор C++ — синтаксический анализ C++ просто невозможен без него. Теперь __global__ не является ключевым словом C++, поэтому у Intellisense есть все основания жаловаться.

В качестве обходного пути, поскольку это настоящий компилятор, вы можете воспользоваться этим:

#if defined __INTELLISENSE__
#define __global__
#endif

Теперь препроцессор Intellisense удалит __global__ и скомпилирует остаток как обычный C++. Intellisense на самом деле не связывается, так что в дальнейшем не будет никакого вреда.

удалит ли препроцессор Глобальный из кода или просто то, что видит intellisense, в конце концов, мне нужно это ключевое слово, чтобы компилятор nvidia скомпилировался правильно.

user10780898 20.05.2019 15:04

@GideonMax: Вот почему я подчеркиваю, что существует несколько компиляторов. Препроцессор компилятора Intellisense отличается от препроцессора компилятора CUDA. Первые удалят, вторые нет. Очевидно, что это может быть опасно, потому что это означает, что они не компилируют один и тот же код. Но в данном конкретном случае это нормально.

MSalters 20.05.2019 15:08

Другие вопросы по теме