// 
//     Licensed to the Apache Software Foundation (ASF) under one
//     or more contributor license agreements.  See the NOTICE file
//     distributed with this work for additional information
//     regarding copyright ownership.  The ASF licenses this file
//     to you under the Apache License, Version 2.0 (the
//     "License"); you may not use this file except in compliance
//     with the License.  You may obtain a copy of the License at
// 
//       http://www.apache.org/licenses/LICENSE-2.0
// 
//     Unless required by applicable law or agreed to in writing,
//     software distributed under the License is distributed on an
//     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
//     KIND, either express or implied.  See the License for the
//     specific language governing permissions and limitations
//     under the License.
//

= Рекомендации по работе с приложениями на C/C++ для помощи при работе с кодом
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: Рекомендации по работе с приложениями на C/C++ для помощи при работе с кодом - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, Рекомендации по работе с приложениями на C/C++ для помощи при работе с кодом

_Составители: link:mailto:vladimir.kvashin@oracle.com[+_Владимир Квашнин_+] и link:mailto:vladimir.voskresensky@oracle.com[+_Владимир Воскресенский_+]
Март 2013 г._ [Номер редакции: V8.0]

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

Обратите внимание, что рекомендации, приведенные в этой статье, относятся в основном к проектам, созданным на основе существующего исходного кода или на основе существующего двоичного кода. Для проектов, созданных и управляемых в конфигурации IDE 'Помощь при работе с кодом', выполнение этих рекомендаций не обязательно.



image::images/netbeans-stamp-80-74-73.png[title="Содержимое этой страницы применимо к IDE NetBeans 8.0/7.4/7.3"]

|===
|-  |<<questionmark,Что делать, если в окне проекта стоит вопросительный знак или директива #include подчеркнута красным>> 

|-  |<<analyzer, Настройка встроенного анализатора для помощи при работе с кодом>> 

|-  |<<multiplatform,Настройка помощника при работе с кодом для проектов на базе нескольких платформ>> 

|-  |<<cannotbuild,Настройка помощника при работе с кодом в случаях, когда не удается создать проект>> 

|-  |<<definitiondeclaration,В каких случаях гиперссылка связана с определением функции, а в каких – с объявлением>> 

|-  |<<namespace,Поиск всех определений пространства имен>> 

|-  |<<declaration,Просмотр имени объявления, сделанного в макросе>> 
|===


== Что делать, если проект помечен вопросительным знаком в окне проектов

Если в окне проекта стоит вопросительный знак или директива  ``#include``  подчеркнута красным, то ваш проект имеет неразрешенные директивы #include. В среде IDE применяется внутренний синтаксический анализатор, который используется функциями помощника при работе с кодом (автозавершение кода, окно классов, окно переходов и т. д.). Эта отметка означает, что этот анализатор не может решить некоторые директивы  ``#include`` , потому что проект IDE имеет неправильную конфигурацию. Это может произойти, если проект был создан на основе существующих исходных кодов без информации об отладке или если, например, исходные файлы включали новые библиотеки, когда проект IDE был уже создан.

Вот несколько возможных причин (от наиболее до наименее вероятных).

* Неверные или недостаточные пути к пользовательским include, указанные в проекте, логической папке или свойствах файла.
* Неверные или недостаточные пользовательские макросы, указанные в проекте, логической папке или свойствах файла.
* Исходный файл по ошибке включен в проект
* Файл заголовка не включен ни в один исходный файл и поэтому по ошибке включен в проект

Если вы держите курсор мыши на папке проекта, в подсказке отображаются некоторые сведения об этой проблеме. Для получения дополнительных сведений можно щелкнуть правой кнопкой мыши проект и выбрать 'Помощь при работе с кодом' -> 'Директивы Failed #include/#error'.

Попробуйте запустить мастер настройки помощника при работе с кодом, щелкнув правой кнопкой мыши проект и выбрав 'Помощник при работе с кодом' > 'Настроить помощника при работе с кодом' для устранения проблемы. Если вы знаете местоположение файлов, которые соответствуют ошибке директивы include, можно настроить проект, логическую папку и свойства файлов вручную.


== Настройка встроенного анализатора для помощи при работе с кодом

Предположим, что исходный код приложения управляется системой контроля версий (VCS), такой как Mercurial, и вы создаете проект IDE на основе исходного кода. Если открыть IDE проект в IDE и вызвать изменения из VCS, необходимо создать проект IDE таким образом, чтобы он был обновлен с этими модификациями.

После сборки проекта в IDE проект автоматически обновляется в IDE следующими способами.

* К проекту IDE добавляются новые блоки компиляции.
* Существующие блоки компиляции изменяются с учетом новых или измененных определенных пользователем добавлений и макросов.
* Модули компиляции, которые исключены из сборки, не исключаются из функции помощи при работе с кодом.

IDE использует анализатор сборок для сбора информации о сборке, используя промежуточные техники для получения вызова EXEC системной библиотеки на платформах Oracle Solaris и Linux. По умолчанию средство анализа сборки используется при создании проекта с существующим исходным кодом и запуске функции помощи при работе с кодом вручную. Если анализатор сборки не используется, журнал результатов сборки используется для сбора информации.

Если не нужно, чтобы IDE выполняла обновления проекта, можно отключить анализатор сборки следующим образом.

1. Щелкните правой кнопкой мыши узел проекта в окне 'Проекты' и выберите 'Свойства'.
2. В диалоговом окне "Свойства проекта" выберите категорию "Помощь при работе с кодом".
3. Снимите флажок 'Использовать анализатор сборки'.

Для проектов, созданных на основе исходного кода, для которых создана своя собственная среда во время сборки, анализатор сборки иногда может работать с ошибками. В случае ошибки сборки, если установлен флажок 'Использовать анализатор сборки' следует проверить сценарий сборки, чтобы убедиться, что отменена переменная среды  ``LD_LIBRARY_PATH`` . Если переменная  ``LD_LIBRARY_PATH``  отменена, также следует отменить  ``LD_PRELOAD`` . Если эти две переменные отменены, анализатор сборки автоматически отключается. Если не удается изменить сценарий сборки, можно отключить анализатор сборки, как описано выше, и IDE может использовать журнал выходных данных для информации о сборке.


== Настройка помощника при работе с кодом для проектов на базе нескольких платформ

При разработке проекта на базе нескольких платформ с помощью существующего кода можно использовать один и тот же проект IDE для нескольких платформ. Создание конфигурации для платформы и изменение набора компиляторов, параметров компиляторов и других свойств проекта надлежащим образом.

Мастер настройки помощника при работе с кодом также можно использовать для каждой конфигурации отдельно: он изменяет только ту конфигурацию, которая активна в настоящий момент. Таким образом, вы можете запустить его отдельно для каждой конфигурации и получить разные параметры помощника при работе с кодом для каждой платформы.


== Настройка помощника при работе с кодом в случаях, когда не удается создать проект

Использование мастера настройки помощника при работе с кодом наиболее эффективно при сборке кода с использованием данных отладки (рекомендуемые параметры:  ``-g3 -gdwarf-2``  для компиляторов GNU и просто  ``-g``  для компиляторов Oracle Solaris Studio.

Но если сборка проекта не выполнена или не содержит данных отладки, мастер настройки помощника при работе с кодом поддерживает специальный режим 'Поиск в файловых системах файлов заголовков C/C++'. В этом режиме IDE NetBeans попытки разрешения конфликтов включали директивы путем поиска файловых систем для заголовков. Мастер попросит ввести путь для поиска заголовков. По умолчанию путем поиска является корень исходного проекта.

Для использования мастера щелкните правой кнопкой мыши проект и выберите 'Помощь при работе с кодом' > 'Настройка помощи при работе с кодом'. Выполните шаги мастера для включения в IDE поддержки обновления помощи при работе с кодом. Нажмите кнопку 'Справка', чтобы получить информацию о каждом шаге.


== Использование гиперссылок для навигации между вызовами и объявлениями

Навигация по гиперссылке позволяет переходить от вызова функции, класса, метода, переменной или константы к их объявлению. Чтобы использовать гиперссылки, выполните одно из следующих действий.

* Наведите курсор мыши на класс, метод, переменную или константу при нажатой кнопке Ctrl. Гиперссылка появляется вместе с подсказкой с информацией об элементе. Нажмите на гиперссылку, и редактор перейдет к объявлению. Нажмите сочетание клавиш Alt + Left, чтобы вернуться к вызову.
* Наведите курсор мыши на идентификатор и нажмите сочетание клавиш Ctrl + B. Редактор переходит к объявлению.
* Нажмите сочетание клавиш Alt + Left, чтобы вернуться к вызову. Нажмите сочетание клавиш Alt + Left и Alt + Right для перемещения вперед и назад по хронологии местоположения курсора.

Также можно щелкнуть правой кнопкой мыши и выбрать 'Переход' > 'Переход к объявлению/определению' или другие вариантам навигации по коду.


== Поиск всех определений пространства имен

Пространство имен может быть определено в различных файлах проекта. Для перехода между различными определениями пространства имен используется окно классов (CTRL+9) Щелкните правой кнопкой мыши интересующее вас пространство имен, затем выберите "Все объявления". Отобразится список всех определений, отсортированных по именами файлов.

link:mailto:users@cnd.netbeans.org?subject=subject=Feedback:%20C/C++%20Application%20How-Tos%20-%20NetBeans%20IDE%208.0[+Отправить отзыв по этому учебному курсу+]
