A follow up:

The compiler option '-Wno-bad-function-cast' did not work for c++. See message 
below:
cc1plus: error: command line option '-Wno-bad-function-cast' is valid for 
C/ObjC but not for C++ [-Werror]

Credit to David Andrs of INL, here is an alternative solution:

MatFDColoringSetFunction(fdcoloring,
  (PetscErrorCode(*)(void))(void(*)(void))SNESFormFunction, this);

Thanks,

-Ling

From: petsc-users <[email protected]> on behalf of Zou, Ling via 
petsc-users <[email protected]>
Date: Monday, January 10, 2022 at 9:23 PM
To: Barry Smith <[email protected]>
Cc: PETSc <[email protected]>
Subject: Re: [petsc-users] A problem with MatFDColoringSetFunction
Thank you Barry.

-Ling

From: Barry Smith <[email protected]>
Date: Monday, January 10, 2022 at 5:13 PM
To: Zou, Ling <[email protected]>
Cc: PETSc <[email protected]>
Subject: Re: [petsc-users] A problem with MatFDColoringSetFunction

  This is annoying. You need to pass in a compiler flag to turn off the error 
conditioner for casting a function pointer. It may be 
-Wnoerror=cast-function-type just google.

  Barry


On Jan 10, 2022, at 4:35 PM, Zou, Ling via petsc-users 
<[email protected]<mailto:[email protected]>> wrote:

Hi All,

I would appreciate if you could give some advice for setting the ‘FormFunction’ 
for the MatFDColoringSetFunction function call.
I follow what is shown in the example:
https://petsc.org/release/src/snes/tutorials/ex14.c.html

I setup similar code structure like:
PetscErrorCode FormFunction(SNES,Vec,Vec,void*);
Then use it as:
MatFDColoringSetFunction(fdcoloring, (PetscErrorCode(*)(void))SNESFormFunction, 
this);

This works fine on my local MacOS. However, when commit it to a remote repo, 
the compiler there gives me the following error (where warnings are treated as 
errors):

src/base/PETScProblemInterface.C:100:67: error:
cast between incompatible function types from
'PetscErrorCode (*)(SNES, Vec, Vec, void*)' {aka 'int (*)(_p_SNES*, _p_Vec*, 
_p_Vec*, void*)'}
to
'PetscErrorCode (*)()' {aka 'int (*)()'} [-Werror=cast-function-type]

Any help is appreciated.

-Ling

Reply via email to