Вы можете просто использовать тот факт, что assert()
сам по себе является макросом, так что вы можете просто сделать
#ifdef assert
#error "Should not include assert.h"
#endif
Это, конечно, также будет жаловаться, если кто-то определит их собственный *Макрос 1005 *, который, строго говоря, будет законным , если в нем нет стандартного заголовка …
В конце дня я бы пересмотрелвсе, что вы думаете, вы пытаетесь сделать здесь.Если вы находитесь в точке, когда вам нужно убедиться, что кто-то не включает определенный стандартный заголовок, вы, скорее всего, на неверном пути, и, скорее всего, будет гораздо лучший, но совершенно другой подход, если вы просто выберетеотступить и переосмыслить с самого начала.Итак,
Есть ли лучший способ добиться этого?
Почти наверняка.Но это не будет иметь ничего общего с обнаружением и настройкой поведения в зависимости от того, включены ли определенные части стандартной библиотеки или нет…