Thread

  1. Re: Safer hash table initialization macro

    Jelte Fennema-Nio <postgres@jeltef.nl> — 2025-12-05T14:32:32Z

    On Fri, 5 Dec 2025 at 02:30, Thomas Munro <thomas.munro@gmail.com> wrote:
    > How much of our header stuff is supposed to work from C++ too?
    
    I think it's nice if it works, but it doesn't seem the most important.
    Especially since C++ has its own hashmaps. And if it really needs to
    create a hashmap it's still possible to call the.
    
    > I suppose you could
    > write the typeof-based version you already hinted at, but only use it
    > for __cplusplus__ (where typeof exists as decltype).
    
    I tried to figure something out that would work in C++ (with help of
    Claude), but I wasn't able to create a version of the macros without
    also needing to add:
    
    #ifdef __cplusplus
    }
    #include <type_traits>
    extern "C" {
    #endif
    
    It seems quite ugly to escape the extern "C" from the parent like that
    and then re-enter it. Overall it doesn't seem worth the hassle to me
    to make these macros work in C++.
    
    > Another consideration is what impact we have on the Rust world, and
    > potentially other languages used for extensions that call C via FFI
    > etc
    
    FFI generally cannot call macros anyway, only actual symbols.