Re: Make copyObject work in C++
| От | Bryan Green |
|---|---|
| Тема | Re: Make copyObject work in C++ |
| Дата | |
| Msg-id | b03ddcd4-2a16-49ee-b105-e7f609f3c514@gmail.com обсуждение исходный текст |
| Ответ на | Re: Make copyObject work in C++ ("Jelte Fennema-Nio" <postgres@jeltef.nl>) |
| Список | pgsql-hackers |
On 1/25/2026 6:42 AM, Jelte Fennema-Nio wrote: > On Tue Jan 20, 2026 at 5:28 PM CET, Peter Eisentraut wrote: >> I have split your first patch further. For a start, I left out the >> PG_MODULE_MAGIC*-related changes and disabled the module under MSVC. >> This has been committed. I plan to let the buildfarm run with it for >> a day or two and then add in the basic MSVC support. > > To hopefully make your life a bit easier. Here's a rebased version that > enables the MSVC support again, with an updated commit message. > This causes the build to break on VS 2022. Versions prior do not have support for __typeof_unqual__. This would have led to HAVE_TYPEOF_UNQUAL being not defined on the buildfarm causing the fallback to copyObjectImpl() for VS 2019. When you build on VS 2022 you will get an error: ../src/backend/commands/event_trigger.c(1901): error C2100: you cannot dereference an operand of type 'void' VS 2022 (MSVC) does not handle the void * dereference the way gcc/clang does (thanks to GNU extensions, I believe). It exposes __typeof_unqual__ even it C11, but enforces strict C semantics on the void * dereference. To work on this platform the call copyObject(lfirst(cell)) would need to have a cast to the correct concrete type: copyObject((Node *)lfirst(cell)). I was about to update to VS 2026, but now I think I should have an instance of VS from 2019, 2022, and 2026. -- Bryan Green EDB: https://www.enterprisedb.com
В списке pgsql-hackers по дате отправления: