2013-02-08 2 views
5

мне очень нравится на временное включение и отключение части кода, комментируя их таким образом:XCode Предупреждение: "/ * в пределах блока комментария"

/* 
some code 
/**/ 

(виду

/**/

вместо

*/

в конце)

Однако, XCode продолжает давать мне предупреждение:

/* within block comment 

Есть ли способ "заказные" отключить конкретные предупреждения?

ПОЧЕМУ? Я скажу вам, почему: Потому что я могу легко принимать его и выходить только с одним символом, без необходимости прокручивать блок вниз, чтобы взять «*/in и out».

+0

Умм ... просто используйте '* /'? – Doorknob

ответ

5

я нашел очень хорошую альтернативу:

/*  
some code 
/**/ 

Вы можете просто использовать этот вариант:

/* 
some code 
//*/ 

для достижения той же цели без каких-либо предупреждений Xcode!

+0

«очень приятно»? Совсем нет ... – trojanfoe

+0

@trojanfoe вы не хотите определять флаги для каждого блока комментариев, используемых во время разработки, ваш ответ хорош для производственной версии, это один отвечает на конкретный вопрос, более связанный с процессом разработки. –

+1

@ A-Live Это не комментарии, этот код с комментариями. Использование флагов (даже таких, как '0') делает более очевидным, что это код с комментариями, а не комментарий Это решение подвержено ошибкам, так как вы должны помнить, что '// * /' используется для прекращения комментария. Короче говоря, это плохо, а вовсе не «приятно», не говоря уже о «очень приятном». – trojanfoe

8

Когда я хочу временно удалить блок код я использую:

#if 0 
somecode(); 
#endif 

, который позволяет избежать этой проблемы и легко обнаружить позже

Если я хочу, чтобы позже временно повторно включить этот код, а затем я просто переворачивать 0 к 1 на:.

#if 1 
somecode(); 
#endif 

Однако если это включение/выключение должно быть более заметным, и легче контролировать, то я использую константу, определенную в верхней части исходного файла вместо:

#define SOME_FANCY_FEATURE 1 

... 

#if SOME_FANCY_FEATURE 
somecode(); 
#endif // SOME_FANCY_FEATURE 
+0

Не отвечает на мой вопрос, но хорошая альтернатива. Стоит на голосование. –

+0

@ user1423640 Боюсь, что на ваш вопрос нет ответа, просто альтернативы. Вы вводите синтаксические ошибки в свой код, делая то, что делаете. – trojanfoe

+0

@trojanfoe ваше решение SEEMS эффективно, но на самом деле намного хуже. Он терпит неудачу, когда у вас несколько комментариев вложенных фрагментов кода (я часто сталкиваюсь с этим при отладке/рефакторинге больших монолитных проектов, которые давно запоздали в капитальном ремонте, то есть в реальных приложениях :)).Проблема заключается в том, что Xcode имеет очень плохую поддержку вложенных блоков #if: после нескольких гнезд он разбивает синтаксис hilighter и форматировщик для всего класса, и он никогда не сможет правильно настроить макет. Если бы Xcode был лучше, ваш подход работал бы. В общем, он работает только для тривиальных случаев :( – Adam

3

Реальный ответ для меня (просто отключить предупреждение о XCode, не меняя ни одной строчки в унаследованного кода) здесь: https://stackoverflow.com/a/21046102/540639
компании Apple LLVM 6.0 Пользовательские Флаги компилятора -> Другие флаги предупреждения -> -Wno-комментарий

Смежные вопросы