Почему я получаю предупреждение C4081 об этой #pragma? - PullRequest
3 голосов
/ 23 февраля 2010

У меня есть привычка удалять все предупреждения, указанные в моем коде. Мне просто нравится чистая сборка, если это возможно. Я использовал

#pragma comment(lib,"some.lib");

Я получаю это предупреждение:

предупреждение c4081: ожидаемый «перевод строки»; найдено ';'

Я не уверен, почему это вызвало бы предупреждение. Могу ли я получить помощь по его удалению?

Ответы [ 4 ]

11 голосов
/ 24 февраля 2010

Это точка с запятой в конце строки. Его не нужно для #pragma.

edit: Предупреждение говорит само за себя: ожидал новую строку в конце прагмы, но вместо этого нашел точку с запятой.

Протестировано с VS2008

3 голосов
/ 24 февраля 2010

Вы можете выборочно и временно отключить все предупреждения, подобные этому:

#pragma warning(push, 0)        

#include <boost/filesystem/operations.hpp>
#include <boost/filesystem/exception.hpp>
#include <boost/filesystem/convenience.hpp>
#include <boost/program_options.hpp>
#include <boost/foreach.hpp>
#include <boost/algorithm/string/replace.hpp>
#include <boost/filesystem/operations.hpp>
#include <boost/filesystem/exception.hpp>
#include <boost/bind.hpp>
#include <boost/iostreams/copy.hpp>
#include <boost/iostreams/filter/zlib.hpp>
#include <boost/iostreams/filtering_stream.hpp>
#include <boost/iostreams/device/back_inserter.hpp>

#pragma warning(pop)

Вместо 0 вы можете при желании передать что-то вроде:

#pragma warning( push )
#pragma warning( disable : 4081)
#pragma warning( disable : 4706 )
#pragma warning( disable : 4707 )
// Some code
#pragma warning( pop ) 
1 голос
/ 24 февраля 2010
#pragma warning(disable: 4081)

отключит предупреждение. но я не могу воспроизвести предупреждение, если синтаксис комментария неверен.

#pragma comment(lib "some.lib") 

выдает предупреждение 4081, но

#pragma comment(lib, "some.lib") 

нет.

Каков текст вашего предупреждающего сообщения?

Edit: теперь я вижу, забудьте добавить предупреждение #pragma, просто удалите; с конца строки комментария. это синтаксическая ошибка.

0 голосов
/ 24 февраля 2010

Вы не упомянули тип и версию компилятора, но я думаю, что вам нужно указать имя без ".lib" во втором параметре ( см. Здесь )

...