Errores del compilador de C++: Errores sin sentido de una declaración de función
Un desarrollador que añadía soporte XAML a una aplicación C++ encontró una serie de errores del compilador simplemente incluyendo el archivo de cabecera winrt/Windows.UI.Xaml.h. Los errores provenían de lo que parecía ser una declaración de función normal: `template struct consume_Windows_UI_Xaml_IExceptionRoutedEventArgs { [[nodiscard]] auto ErrorMessage() const; };` La causa raíz era una macro preexistente llamada ErrorMessage en el proyecto del desarrollador, que entraba en conflicto con el nombre de la función. Esta macro creaba un objeto ErrorMessageString y devolvía un puntero a una cadena de mensaje de error. La falta de límites de la macro hizo que el compilador interpretara erróneamente la declaración de la función como una invocación de macro, lo que resultó en errores como "argumentos insuficientes". La solución consistió en deshabilitar la macro usando #pragma undef antes de incluir el encabezado o eliminar la macro por completo y reemplazarla con una función en línea.
Leer más