// вызывать предупреждений, мы удалим из этого файла
// соответствующие директивы #pragma, но сам заголовочный
// файл останется.
//
#pragma warning(push) // Отключение предупреждений только
// для данного заголовочного файла
#pragma warning(disable:4512)
#pragma warning(disable:4180)
#include
#pragma warning(pop) // Восстанавливаем исходный уровень
// вывода предупреждений
// ... внутри пользовательского распределителя подсказка не
// используется …
// Предупреждение: "неиспользуемый параметр 'localityHint'"
pointer allocate(size_type numObjects,
const void *localityHint = 0) {
return static_cast
mallocShared(numObjects * sizeof(T)));
}
// новая версия: предупреждение устранено
pointer allocate(size_type numObjects,
const void* /* localityHint */ = 0) {
return static_cast
mallocShared(numObjects * sizeof(T)));
}
// Предупреждение: "переменная 'lock' определена, но не
// используется"
void Fun() {
Lock lock;
// ...
}
// новая версия: предупреждение не должно выводиться
void Fun() {
Lock lock;
lock;
// ...
}
return
несмотря на то, что поток управления не может достичь конца функции (например, при наличии бесконечного цикла, инструкции throw, других инструкций return
). Такое предупреждение не стоит игнорировать, поскольку вы можетеswitch
, у которой нет выбора default
, при внесении изменений в программу может привести к неприятностям, так что следует иметь выбор default
, который просто выполняет assert(false)
(см. также рекомендации 68 и 90):
// предупреждение: отсутствующий "return"
int Fun(Color C) {
switch(C) {
case Red: return 2;
case Green: return 0;
case Blue:
case Black: return 1;
}
}
// Новая версия: предупреждение устранено
int Fun(Color C) {
switch(C) {
case Red: return 2;
case Green: return 0;
case Blue:
case Black: return 1;
// Значение !"string" равно false:
default: assert(!"should never get here!");
return -1;
}
}
signed
/unsigned
".