Форум программистов, компьютерный форум CyberForum.ru

Что такое __pragma(warning()) ? - C++

Восстановить пароль Регистрация
 
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
11.07.2015, 19:04     Что такое __pragma(warning()) ? #1
Вот код макроса:
C++
1
2
3
#define PTM_WARNING_DISABLE \
    __pragma(warning( push )) \
    __pragma(warning( disable : 4867 ))
Что эти функции делают? И что это за функция __pragma? От ее определение нельзя посмотреть?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DrOffset
6450 / 3824 / 885
Регистрация: 30.01.2014
Сообщений: 6,618
11.07.2015, 19:10     Что такое __pragma(warning()) ? #2
Цитата Сообщение от ninja2 Посмотреть сообщение
И что это за функция __pragma?
Это не функция, а директива препроцессора.
https://msdn.microsoft.com/ru-ru/library/2c8f766e.aspx
http://habrahabr.ru/company/abbyy/blog/136909/
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
12.07.2015, 09:10  [ТС]     Что такое __pragma(warning()) ? #3
Цитата Сообщение от DrOffset Посмотреть сообщение
Это не функция, а директива препроцессора.
А директивы препроцессора это функции с двумя подчеркиваниями впереди?
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
12.07.2015, 09:21     Что такое __pragma(warning()) ? #4
Цитата Сообщение от ninja2 Посмотреть сообщение
А директивы препроцессора это функции с двумя подчеркиваниями впереди?
Директива — не функция, как уже было сказано выше.
В данном случае __pragma — ключевое слово, специфичное для майкрософтовского компилятора. Введено для того, чтобы можно было подставлять директивы препроцессора с помощью макросов.
https://msdn.microsoft.com/en-US/en-.../d9x1s805.aspx
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
12.07.2015, 09:28  [ТС]     Что такое __pragma(warning()) ? #5
В общем этот worning используется для заглушки вывода ошибок, можно от так использовать:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
using std::cout;
 
__pragma(warning( disable : 4172 ))
__pragma(warning( disable : 4101 ))
 
int& f()
{
    int x;//C4101
    int y(10);
    return y;//C4172
}
 
int main()
{
    cout <<f()<<"\n";
 
    return 0;
}
и не будут выводится предупреждения
Yandex
Объявления
12.07.2015, 09:28     Что такое __pragma(warning()) ?
Ответ Создать тему
Опции темы

Текущее время: 02:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru