The following code is contained in the file secp256k1.c:

static void 
  const char* str, 
  void* data) 
  fprintf(stderr, "[libsecp256k1] illegal argument: %s\n", str);

Could someone explain the purpose of the line (void)data;? I am pretty sure there is one, but I can't figure out what it is :(


Without (void) data;, gcc will complain about data being an unused variable. This is used throughout the codebase, especially for context objects, to deal with parameters which are required for API/consistency reasons but not actually needed.

  • 1
    Many compilers also have some variant of __unused(data);, which, if available, is preferred. – abelenky Jun 3 '17 at 18:33

Notice that without this cast, data would be unused in this function. This is probably here for the purpose of preventing compiler warnings about unused variables, while keeping the argument in the function signature.

  • yes you are right, the cast (void) is necessary to avoid gcc's warning. Thank you ! – Sven Williamson Jun 3 '17 at 16:17

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.