// 
//     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++アプリケーションの学習


== C、C++およびFortranアプリケーションの開発

C/C++をサポートするNetBeans IDEをインストールすると、そのIDEにはC/C++用のプロジェクト・タイプと適切なテンプレートが含まれます。動的ライブラリや静的ライブラリとともに、C/C++/Fortranアプリケーションを作成でき、既存のソースからC/C++/Fortranプロジェクトを作成することもできます。エディタによって、C/C++コードのインデント、コード補完、および構文の強調が行われ、GNU gdbデバッガが十分に統合されています。

image::../../images_www/v6/trails/trails-box-tr.png[] image::../../images_www/v6/trails/trails-box-tl.png[]

== 開始 

* link:../../community/releases/80/cpp-setup-instructions.html[+C/C++/Fortran向けのNetBeans IDEの構成+]
image::../../images_www/v6/trails/trails-box-br.png[] image::../../images_www/v6/trails/trails-box-bl.png[]image::../../images_www/v6/trails/trails-box-tr.png[] image::../../images_www/v6/trails/trails-box-tl.png[]

== チュートリアルおよび記事

*C/C++プロジェクトの作成*

* link:../docs/cnd/quickstart.html[+C/C++プロジェクトのクイック・スタート・チュートリアル+]
* link:../docs/cnd/development-environment.html[+C/C++プロジェクトの開発環境の定義+]
* link:../docs/cnd/beginning-jni-linux.html[+LinuxでのNetBeans IDEとC/C++プラグインを使用したJNIの開始+]

*C/C++プロジェクトの開発*

* link:../docs/cnd/navigating-editing.html[+C/C++ソース・ファイルの編集とナビゲートのチュートリアル+]
* link:../docs/cnd/debugging.html[+C/C++プロジェクトのデバッグのチュートリアル+]
* link:../docs/cnd/remote-modes.html[+C/C++リモート開発のモード+]
* link:../docs/cnd/remotedev-tutorial.html[+C/C++リモート開発のチュートリアル+]
* link:../docs/cnd/c-unit-test.html[+C/C++プロジェクトへの単体テストの追加+]
image::../../images_www/v6/trails/trails-box-br.png[] image::../../images_www/v6/trails/trails-box-bl.png[]image::../../images_www/v6/trails/trails-box-tr.png[] image::../../images_www/v6/trails/trails-box-tl.png[]

== チュートリアルおよび記事

*C/C++プロジェクトの操作方法*

* link:../docs/cnd/HowTos.html[+C/C++アプリケーションの操作方法+]
* link:../docs/cnd/depchecking.html[+依存性の確認+]
* link:../docs/cnd/toolchain.html[+C/C++ツール・コレクション・ディスクリプタの使用+]
* link:../docs/cnd/cpp-vcs.html[+VCSへのNetBeans C/C++プロジェクトの格納+]
image::../../images_www/v6/trails/trails-box-br.png[] image::../../images_www/v6/trails/trails-box-bl.png[]image::../../images_www/v6/trails/trails-box-tr.png[] image::../../images_www/v6/trails/trails-box-tl.png[]

== コミュニティの寄稿ドキュメント

* link:http://wiki.netbeans.org/HowToCreate64-BitC/C++WindowsProgramWithNetBeans[+64ビットC/C++ Windows実行可能ファイルを作成するためのNetBeans IDEの設定+]
* link:http://wiki.netbeans.org/Talk:HowToSetup64-BitQt5WithNetBeans7.4OnWindows[+NetBeans IDEと組み合せて使用するためのWindowsでの64ビットQt 5の設定+]

image::../../images_www/v6/arrow-button.gif[role="left", link="http://wiki.netbeans.org/CommunityDocs_Contributions"]

image::../../images_www/v6/trails/trails-box-br.png[] image::../../images_www/v6/trails/trails-box-bl.png[]image::../../images_www/v6/trails/trails-box-tr.png[] image::../../images_www/v6/trails/trails-box-tl.png[]

== その他のリソース

* link:../72/cnd/index.html[+以前のリリースのC/C++ドキュメント+]
* link:http://wiki.netbeans.org/NetBeansUserFAQ#NetBeans_C.2FC.2B.2B_Development_Pack[+NetBeans C/C++プラグインのFAQ+]
* link:https://netbeans.org/projects/cnd/lists[+NetBeans C/C++メーリング・リスト+]
image::../../images_www/v6/trails/trails-box-br.png[] image::../../images_www/v6/trails/trails-box-bl.png[]
