C macro/#define добавление отступа?

Ниже, кажется, работает. Ввести событие обрабатывает переключение вкладок к управлению и работам MouseDown, когда управление нажато.

    private ########### void textBox1_Enter(object sender, EventArgs e)
    {
        textBox1.SelectAll();
    }

    private void textBox1_MouseDown(object sender, MouseEventArgs e)
    {
        if (textBox1.Focused)
            textBox1.SelectAll();
    }
9
задан Michael 6 December 2009 в 06:30
поделиться

4 ответа

IIRC, более старые препроцессоры C требовали, чтобы # был первым символом в строке (хотя я никогда не встречал ни одного, у которого было бы это требование).

Я никогда не видел ваш код таким, как ваш первый пример. Я обычно писал директивы препроцессора, как во втором примере. Я обнаружил, что это визуально меньше мешает отступу в реальном коде (не то, что я больше пишу на C).

В руководстве по препроцессору GNU C говорится:

Директивы предварительной обработки - это строки в ваша программа, начинающаяся с символа '#'. Пробелы разрешены до и после '#'.

5
ответ дан 4 December 2019 в 13:03
поделиться

Я предпочитаю третий стиль, за исключением охранников включения, для которых я использую второй стиль.

Мне вообще не нравится первый стиль - я думаю о #define как о инструкции препроцессора, хотя на самом деле, конечно, это не 't, это # , за которым следует инструкция препроцессора define . Но поскольку я думаю об этом именно так, мне кажется неправильным их разделять. Я ожидаю, что текстовые редакторы, написанные людьми, которые отстаивают этот стиль, будут иметь блокировку отступа / отмену отступа, которая работает с кодом, написанным в этом стиле. Но я бы не хотел столкнуться с этим с помощью текстового редактора, который этого не сделал.

Вот. Нет смысла потакать древним препроцессорам, где # должен быть первым символом строки, если только вы не можете сразу перечислить все другие различия между этими реализациями и стандартным C, чтобы избежать других вещей, которые вы могли бы сделать то, что они не поддержали бы. Конечно, если вы действительно работаете с предустановленным компилятором, достаточно честно.

3
ответ дан 4 December 2019 в 13:03
поделиться

Я видел, как это делалось всеми тремя способами, похоже, это вопрос стиль, а не синтаксис

Хотя обычно второй пример является наиболее распространенным, я встречал случаи, когда первый (или третий) использовался, чтобы помочь различить несколько уровней #ifdefs. Иногда логика может стать глубоко вложенной, и единственный способ понять ее с первого взгляда - использовать отступы, как это принято делать в блоках кода между {и}.

7
ответ дан 4 December 2019 в 13:03
поделиться

Директивы препроцессора - это строки, включенные в наши программы, которые на самом деле не являются операторами программы, а являются директивами для препроцессора. Этим строкам всегда предшествует знак решетки (#). Перед и после символа «#» разрешены пробелы. Как только обнаруживается символ новой строки, директива препроцессора считается завершенной.

Других правил в отношении стандарта C / C ++ не существует, так что это остается вопросом стиля и удобочитаемости, я видел / писал программы только вторым способом, который вы разместили, хотя третий кажется более читабельным.

1
ответ дан 4 December 2019 в 13:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: