CDT プラグイン | C / C++ 開発環境 |
---|---|
更新サイト | |
更新サイト "Callisto Discovery Site" | |
AStyle プラグイン | コード・フォーマッター |
astyleclipse-1.0.101.v200610192129.zip | |
http://astyleclipse.sourceforge.net/ | |
CDTSPLint プラグイン | C ソースコードの静的解析 |
更新サイト | |
更新サイトhttp://cdtsplint.berlios.de/updates/ | |
JStyle プラグイン(*) | エディタ上に全角空白、タブ、改行を表示 |
jstyle_3.2.1.0.zip | |
http://sourceforge.jp/projects/mergedoc/files/?release_id=15547 |
(*): "Windows 上の開発環境のインストール" 参照。
> eclipse -clean
MinGW | C / C++ コンパイラー |
---|---|
MinGW-5.1.1.exe (インストーラー) | |
http://sourceforge.net/project/showfiles.php?group_id=2435 | |
gdb | デバッガー |
gdb-5.2.1-1.exe (インストーラー) | |
http://sourceforge.net/project/showfiles.php?group_id=2435&package_id=82721 |
C/C++リソース管理(プロジェクト機能) | Standard Make:任意の Makefile を利用 |
Managed Make:CDT が Makefile を自動生成 | |
C/C++エディター機能 | キーワード色付け(syntax highlighting) |
コードの畳み込み(code folding) | |
コード補完機能(code assist) | |
C/C++用ユーティリティ | 関数検索(C/C++ indexer) |
リファクタリング(rename のみサポート) | |
ビルド | 外部コンパイラ、ビルダー(make)とのビルド連携機能 |
自動ビルド | |
デバッグ機能 | gdb / gdbserverと連携したグラフィカルデバッグ |
GUI 上から以下のデバッグ機能をサポート | |
エディタと連携したブレークポイントの設定 | |
実行制御(実行、ステップイン、ステップアウト) | |
変数 / メモリ / レジスタ値等の参照・変更 | |
逆アセンブル | |
拡張機能 | CDT 拡張ポイントを使用 |
Standard Make | 任意の Makefile を利用 |
Managed Make | CDT が Makefile を自動生成 |
- /**
- * hello01.c
- *
- */
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- enum {MESSAGE_SIZE = 256}; /* 表示メッセージの最大長 */
- int main(int argc, char **argv) {
- const char *DEFAULT_MSG = "Hello World!";
- char msg[MESSAGE_SIZE];
- int count = 1;
- int i;
- strncpy(msg, DEFAULT_MSG, MESSAGE_SIZE);
- switch (argc) {
- case 3:
- count = atoi(argv[2]);
- /* FALL THROUGH */
- case 2:
- strncpy(msg, argv[1], MESSAGE_SIZE);
- break;
- default:
- /* DO NOTHING */
- break;
- }
- for (i = 0; i < count; i++) {
- printf("%s\n", msg);
- }
- return 0;
- }
- .SUFFIXES: .c .o .h # makefile 中で使う拡張子を設定
- CC = gcc # コンパイラーの指定
- CFLAGS = -g3 -Wall # コンパイル・オプション
- LDFLAGS = # リンク・オプション
- INCLUDES = # コンパイル時のライブラリーの指定
- LIBS = # リンク・ライブラリーの指定
- TARGET = hello01.exe # 実行ファイル
- OBJS = hello01.o # オブジェクト・ファイル
- all : $(TARGET)
- $(TARGET) : $(OBJS)
- $(CC) $(OBJS) $(LIBS) -o $(TARGET) # (コマンドの前はタブ)
- .c.o: # 拡張子.c のファイルが変更されたら、拡張子.o のファイルを作成する
- $(CC) -c $(CFLAGS) $(INCLUDES) $< # (コマンドの前はタブ)
- .h.c :
- clean :
- rm $(TARGET) $(OBJS) # (コマンドの前はタブ)
make -k all gcc -c -g3 -Wall hello01.c # (コマンドの前はタブ) gcc hello01.o -o hello01.exe # (コマンドの前はタブ)
[hello01.exeを右クリック] - [Run As] - [Run Local C/C++ Application]□ 実行結果
Hello World!
[hello01.exeを右クリック] - [Debug As] - [Debug Local C/C++ Application]
**** Build of configuration Debug for project c1-mgd **** make -k all Building file: ../hello01.c Invoking: GCC C Compiler gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"hello01.d" -MT"hello01.d" -o"hello01.o" "../hello01.c" ../hello01.c: In function `main': ../hello01.c:25: warning: control reaches end of non-void function Finished building: ../hello01.c Building target: hello01.exe Invoking: GCC C Linker gcc -o"hello01.exe" ./hello01.o Finished building target: hello01.exe Build complete for project hello01
[hello01.exeを右クリック] - [Run As] - [Run Local C/C++ Application]□ 実行結果
Hello World!
ansi | ANSI style | namespace foospace { int Foo() { if (isBar) { bar(); return 1; } else return 0; } } |
---|---|---|
gnu | GNU style | namespace foospace { int Foo() { if (isBar) { bar(); return 1; } else return 0; } } |
kr | Kernighan Ritchie style | namespace foospace { int Foo() { if (isBar) { bar(); return 1; } else return 0; } } |
linux style | Linux | namespace foospace { int Foo() { if (isBar) { bar(); return 1; } else return 0; } } |
no | no style | namespace foospace { int Foo() { if (isBar) { bar(); return 1; } else return 0; } } |
PATH=%PATH%;%SPLINT_HOME%\bin
LARCH_PATH=%SPLINT_HOME%\lib
□ ビルド結果
- .SUFFIXES: .c .o .h # makefile 中で使う拡張子を設定
- CC = gcc # コンパイラーの指定
- CFLAGS = -g3 -Wall # コンパイル・オプション
- LDFLAGS = # リンク・オプション
- INCLUDES = # コンパイル時のライブラリーの指定
- LIBS = # リンク・ライブラリーの指定
- TARGET = hello01.exe # 実行ファイル
- OBJS = hello01.o # オブジェクトファイル
- LINT = splint # lint 指定
- LINTFLAGS = # splint オプション
- all : $(TARGET)
- $(TARGET) : $(OBJS)
- $(CC) $(OBJS) $(LIBS) -o $(TARGET) # (コマンドの前はタブ)
- .c.o: # 拡張子.c のファイルが変更されたら、拡張子.o のファイルを作成する
- $(LINT) $(INCLUDES) $(LINTFLAGS) $< # splint
- $(CC) -c $(CFLAGS) $(INCLUDES) $< # (コマンドの前はタブ)
- .h.c :
- clean :
- rm $(TARGET) $(OBJS) # (コマンドの前はタブ)
make -k all splint hello01.c # splint Splint 3.1.1 --- 12 April 2003 Cannot find standard library: standard.lcd Check LARCH_PATH environment variable. hello01.c: (in function main) hello01.c(17,5): Unrecognized identifier: strncpy Identifier used in code has not been declared. (Use -unrecog to inhibit warning) hello01.c(21,17): Unrecognized identifier: atoi hello01.c(23,10): Fall through case (no preceding break) Execution falls through from the previous case. (Use -casebreak to inhibit warning) hello01.c(32,9): Unrecognized identifier: printf Finished checking --- 4 code warnings make: *** [hello01.o] Error 1 make: Target `all' not remade because of errors.
□ ビルド結果
- .SUFFIXES: .c .o .h # makefile 中で使う拡張子を設定
- CC = gcc # コンパイラーの指定
- CFLAGS = -g3 -Wall # コンパイル・オプション
- LDFLAGS = # リンク・オプション
- INCLUDES = # コンパイル時のライブラリーの指定
- LIBS = # リンク・ライブラリーの指定
- TARGET = hello01.exe # 実行ファイル
- OBJS = hello01.o # オブジェクトファイル
- LINT = splint # lint 指定
- LINTFLAGS = -casebreak -unrecog # splint オプション
- all : $(TARGET)
- $(TARGET) : $(OBJS)
- $(CC) $(OBJS) $(LIBS) -o $(TARGET) # (コマンドの前はタブ)
- .c.o: # 拡張子.c のファイルが変更されたら、拡張子.o のファイルを作成する
- $(LINT) $(INCLUDES) $(LINTFLAGS) $< # splint
- $(CC) -c $(CFLAGS) $(INCLUDES) $< # (コマンドの前はタブ)
- .h.c :
- clean :
- rm $(TARGET) $(OBJS) # (コマンドの前はタブ)
make -k all splint -casebreak -unrecog hello01.c # splint Splint 3.1.1 --- 12 April 2003 Cannot find standard library: standard.lcd Check LARCH_PATH environment variable. Finished checking --- no warnings gcc -c -g3 -Wall hello01.c # (コマンドの前はタブ) gcc hello01.o -o hello01.exe # (コマンドの前はタブ)