Следующие сообщения появляются, если компилятор основан на компиляторе Visual®. Для получения дополнительной информации смотрите Compiler (-compiler).
Когда Визуальное приложение использует директивы #import, компилятор Visual C++ генерирует заголовочный файл с дополнительным .tlh, который содержит некоторые определения. Чтобы избежать ошибок компиляции во время анализа Polyspace®, необходимо задать папку, содержащую те файлы.
Оригинальный код:
#include "stdafx.h"
#include <comdef.h>
#import <MsXml.tlb>
MSXML::_xml_error e ;
MSXML::DOMDocument* doc ;
int _tmain(int argc, _TCHAR* argv[])
{
return 0;
}Сообщение об ошибке:
"../sources/ImportDir.cpp", line 7: catastrophic error: could not
open source file "./MsXml.tlh"
#import <MsXml.tlb>
Компилятор Visual C++ генерирует эти файлы в своей “сборке - в” папке (обычно Отладка или Релиз). В порядке обеспечить те файлы:
Создайте свое приложение Visual C++.
Задайте свою папку сборки для анализа Polyspace.
Используя различное значение с флагом компиляции (#pragma pack) может привести к соединяющемуся сообщению об ошибке.
Оригинальный код:
| test1.cpp | type.h | test2.cpp |
|---|---|---|
#pragma pack(4) #include "type.h" | struct A
{
char c ;
int i ;
} ; | #pragma pack(2) #include "type.h" |
Сообщение об ошибке:
Pre-linking C++ sources ...
"../sources/type.h", line 2: error: declaration of class "A" had
a different meaning during compilation of "test1.cpp"
(class types do not match)
struct A
^
detected during compilation of secondary translation unit
"test2.cpp"Чтобы продолжить анализ, используйте опцию Ignore pragma pack directives (-ignore-pragma-pack).
Polyspace не поддерживает Microsoft® C ++ / CLI, набор расширений языка для программирования.NET.
Можно получить ошибки, такие как:
error: name must be a namespace name | using namespace System;
error: expected a declaration | public ref class Form1 : public System::Windows::Forms::Form