Просмотр компилятора развернул код - C++

Это потому, что onTouch - не единственный способ взаимодействия с Views.

Для CollapsingToolbarLayout вам сначала нужно понять, что он предназначен для использования в качестве потомка AppBarLayout.

AppBarLayout - это в значительной степени вертикаль LinearLayout, которая используется для реализации множества функций, относящихся к Material Design, включая функции прокрутки. Другими словами, этот макет - это то, что обрабатывает прокрутку для дочернего представления.

В источнике CollapsingToolbarLayout, посмотрите на метод onAttachedToWindow(). Внутри этого метода вы увидите, что если родителем этой панели инструментов является AppBarLayout, то он установит пользовательский OffsetUpdateListener в метод своего родителя addOnOffsetChangedListener(). Посмотрите дальше вниз по источнику, чтобы увидеть определение его OffsetUpdateListener.

Это значит, что CollapsingToolbarLayout говорит своему родителю (AppBarLayout) сказать себе, есть ли какие-либо изменения в «смещении», которым является прокрутка.

Так что нет необходимости для CollapsingToolbarLayout иметь переопределение 'OnTouch', потому что оно не обрабатывает касания или прокрутку. Он просто позволяет своему родителю обрабатывать прокрутку, в то время как он просто сообщает родителю, чтобы он знал, когда он должен реагировать, другими словами ... когда он должен свернуться или развернуться.

11
задан Brandon Wamboldt 15 May 2014 в 12:18
поделиться

5 ответов

VC ++ компилятор (cl.exe) поддерживает несколько переключателей командной строки для этого:

/E preprocess to stdout
/P preprocess to file
/EP preproscess to stdout with no #lines

Дополнительные переключатели командной строки могут быть добавлены в Ваших свойствах проекта. В моей версии (VC2005), Параметрах конфигурации-> C/C++-> Командная строка-> Дополнительные опции

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

Компилятор на самом деле не делает ни одного макрорасширения. Это - задача препроцессора. Все это появляется как один шаг, но компилятор на самом деле отваливает к отдельному препроцессору задачи и захватывает вывод для Вас.

Шаблоны не "расширены" во время компиляции. Они инстанцируют на использовании во время компиляции. Различие - то, что компилятор сразу генерирует объектный код для шаблона; нет никакого промежуточного исходного кода, который выходит. Вы не можете посмотреть на инстанцированный код шаблона как на источник, он разгружен как блок, когда он необходим.

Если у Вас есть GCC, можно также звонить, препроцессор непосредственно с помощью 'cpp' с правильными аргументами (главным образом включают пути и макроопределения командной строки). Другие ответили за MSVC.

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

Обратите внимание, что/E в VC ++ только разворачивает операторы препроцессора (то есть, #include, #ifdef, #define и т.д.)

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

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

Для испускания предварительно обработанного кода назовите cpp непосредственно использования-E опцией в gcc и связанных компиляторах; я уверен, другие компиляторы или пакеты имеют подобные вещи (действительно согласно другому ответу, это-/E или/P в VC ++).

Не уверенный в выводе инстанцированных шаблонов. Это намного более трудно сделать, я думаю, так как это - на самом деле часть компиляции вместо того, чтобы предварительно обработать (по крайней мере, в современных компиляторах, начиная с исходной cfront версии, которая была c ++-to-c переводчик, если я вспоминаю правильно).

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

Легко добавить опцию к компиляторам для проявления вывода после макроподстановки. Это определяется как простая текстовая опция замены так или иначе. Много компиляторов реализуют это как отдельный этап, иногда даже обработанный как отдельный инструмент. В любом случае результатом макроподстановки является набор Единиц перевода в текстовой форме.

Шаблоны, с другой стороны, компилируются. Существует несколько этапов к этому. Имена разрешены дважды, например. На любом этапе компилятор сохранил бы результат поиска имени. Это - запись в таблице. Как Вы показали бы это в текстовой форме? Нет никакого тривиального выражения C++ для этого.

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

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