procedure multiply defined error in polyspace code prover

Hello, In Polyspace code prover, when verifying cross-files ANSI C compliance getting procedure multiply defined error for inline functions. Example: INLINE function1() { ... ... } Error:procedure function1 multiply defined.
How to solve this?
Thanks and Regards, Srinivasan K.

답변 (1개)

Alexandre De Barros
Alexandre De Barros 2015년 10월 20일

0 개 추천

Hello Srinivasan,
Can you confirm that the function is defined in a header file ?
Functions that are defined in a header file will be indeed "multiply defined" since this header file can be included in different source files.
Now, when such a function is inlined (using the "inline" qualifier), Polyspace will not give this error. So my question is : does the macro INLINE is really defined as "inline" ? If for example it is defined to nothing, then the function function1 is not an genuine inlined function.
Best regards,
Alexandre

댓글 수: 2

Hi Alexandre, 1.Yes,the function is defined in header file and this header file is included in more places. 2.INLINE is defined as #define INLINE __inline
Thanks & Regards, Srinivasan K.
Hi,
inline is the official keyword in C++ and C99 to inline a function.
__inline is a vendor-specific keyword. Polyspace will only recognize the official keyword, so I suggest you to use a macro definition to map __inline to inline.
If you're using Polyspace in command line, the option is
-D__inline=inline
If you're using the GUI, in your project go to Macros (in Target & Compiler) and add a new preprocessor definition :
__inline=inline
Best regards,
Alexandre

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터File Exchange에서 Function Creation에 대해 자세히 알아보기

질문:

2015년 10월 16일

댓글:

2015년 10월 22일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by