'macro_name': module name cannot be a macro
The value that you pass to the name property of the module attribute cannot be a symbol for the preprocessor to expand; it must be a string literal.
The following sample generates C3309:
#define NAME MyModule [module(name="NAME")]; // C3309 // The following line resolves the error. // [module(name="MyModule")]; [coclass] class MyClass { public: void MyFunc(); }; void main() { }