5 ms·
Purely out of interest, and probably my bad, but what is: (void)k_sz; doing? I've seen fussy people doing: (void) printf( "hello" ); but not what
by zabzonk 2y ago
Purely out of interest, and probably my bad, but what is:
(void)k_sz;
doing? I've seen fussy people doing:
(void) printf( "hello" );
but not what you have written. As I say, probably ignorance on my part.
- ryanpetrich 2y agoThis is to suppress a compiler warning that the k_sz argument is unused.
- lang4d 2y agoThat would be one way to silence an unused variable warning
- secondcoming 2y agoIt silences 'unused variable' warnings.
- tester756 2y agohttps://stackoverflow.com/questions/7354786/what-does-void-variable-name-do-at-the-beginning-of-a-c-function https://stackoverflow.com/questions/7354786/what-does-void-v...
- Sesse__ 2y agoIt's an idiom for telling the compiler “don't give a warning on this argument not being used, I know about it”. Not all compilers will heed it. Other choices include e.g. __attribute__((unused)) (GNU), [[maybe_unused]] (C++17/C23) or just not giving it a name (nonstandard, but very commonly supported).
- tredre3 2y ago> or just not giving it a name (nonstandard, but very commonly supported) It's only supported by gcc 11+ and clang 11+ (both from ~2021) because it was a suggested C2x extension. It's been accepted in C23 so other compilers will eventually support it, but I wouldn't hold my breath regarding when that happens.
- Sesse__ 2y agoAh, of course, in C mode it's different. (I nearly always use C++ mode, where at least GCC 10 happily takes it.)
- zabzonk 2y agoOK, thank you. But why do the functions have those unused parameters?
- Sesse__ 2y agoI would assume that is because the hash table takes in a “hash this key” function pointer and a “compare these keys” function pointer, and those must contain the size for variable-length keys. So even if your user-supplied functions know the length, or only care about the first byte, they have to conform to that API, and then you get an unused parameter.
- zabzonk 2y agoHave functions with different names and different numbers of parameters?
- Sesse__ 2y agoAnd then have a union between the two different kinds of pointers, and a tag to tell which one is in use, then test that tag everywhere? Why? What good does it bring for that extra complexity?
- zabzonk 2y agoDoesn't the name of the function select for the types and use of the parameters? But I haven't written in C for a long time, and this I think could be done more clearly in C++.
- Sesse__ 2y agoYou're saying you would write the entire hash table four times, with everything duplicated and no reuse? Again: Why? What do you gain compared to one line to suppress a warning?
- 2y ago