unset
- это функция, а не оператор. Используйте его, как unset($_SESSION['key']);
, чтобы отключить этот ключ сеанса. Однако вы можете использовать session_destroy();
. (Обязательно запустите сеанс с помощью session_start();
)
Можно безопасно не определить их вопреки требованиям от других. Причина состоит в том, что они - просто макросы. Они только влияют на препроцессор между своим определением и своим неопределением. В Вашем случае, который будет от рано в windows.h к последней строке windows.h. При необходимости в дополнительных заголовках окон Вы включали бы их после windows.h и перед #undef. В Вашем коде препроцессор просто оставит символы без изменений, как предназначено.
Комментарий о более старом коде не важен. Тот код будет в отдельной библиотеке, скомпилированной независимо. Только в ссылке время будет они быть соединенным, когда макросы будут давно в прошлом.
Не определите любые макросы, включая которые Вы не хотите после windows.h
:
#include <windows.h>
#undef near
#undef far
Вы, вероятно, не хотите к неопределенному рядом и далеко везде. Но когда необходимо использовать имена переменной, можно использовать следующее, чтобы не определить макрос локально и добавить его назад, когда Вы сделаны.
#pragma push_macro("near")
#undef near
//your code here.
#pragma pop_macro ("near")
возможно:
#undef near
#undef far
могло быть опасным хотя...
Лучше всего не к. Они определяются для назад совместимости с более старым кодом - если бы Вы избавились от них так или иначе и затем позже должны были использовать часть того старого кода, то Вы были бы повреждены.