← Back to context

Comment by skybrian

20 hours ago

In a higher-level language, you wouldn't need to write code like this:

  const sp_fs_entry_t* a = (const sp_fs_entry_t*)pa;
  const sp_fs_entry_t* b = (const sp_fs_entry_t*)pb;
  return sp_str_compare_alphabetical(a->name, b->name);

Instead it would just be:

  return sp_str_compare_alphabetical(pa->name, pb->name)

With the correct types declared for the parameter types instead of void pointers.

Or if you do need a cast, not having to write "sp_fs_entry_t*" twice in the same line because the local variable's type is inferred.

Maybe after reading C for a while, you don't see all the noise anymore?

Because it's const void *pa, you don't need the cast. A void * pointer will convert to any other kind of pointer. Now you only need to mention the type once. (I forget the const-related rules, but since the consts match in this case I don't think it'll be relevant.)