Поделиться через


Ошибка компилятора C3309

"имя_макроса": в качестве имени модуля нельзя использовать макроопределение или зарезервированное слово

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

Следующий пример приводит к возникновению ошибки C3309:

// C3309.cpp
#define NAME MyModule
[module(name="NAME")];   // C3309
// Try the following line instead
// [module(name="MyModule")];
[coclass]
class MyClass {
public:
   void MyFunc();
};

int main() {
}