procedure multiply defined error in polyspace code prover

조회 수: 4 (최근 30일)
srinivasan kandaswamy
srinivasan kandaswamy 2015년 10월 16일
댓글: Alexandre De Barros 2015년 10월 22일
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일
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
srinivasan kandaswamy
srinivasan kandaswamy 2015년 10월 21일
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.
Alexandre De Barros
Alexandre De Barros 2015년 10월 22일
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

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

카테고리

Help CenterFile Exchange에서 Function Creation에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by