// вызывать предупреждений, мы удалим из этого файла
// соответствующие директивы #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".