В моем каталоге /usr/include
существует как минимум два варианта #define NULL 0
, предназначенных для кода С++ 1:
#define NULL 0 // from rpc/types.h
#define NULL (0) // from libio.h
Я чувствую, что должен быть встречный пример, где первый не был бы безопасным, но я не смог его создать.
В противном случае есть ли веские аргументы в пользу того, почему в этом случае было бы безопасно не включать круглые скобки (например, неформальное "доказательство правильности" )?
1 То есть без включения варианта #define NULL ((void*)0)
, который полезен для C, но недействителен в С++.