掲示板一覧 - トピック一覧 EA ソースコード生成・コード生成テンプレート
変数属性の設定について |
| スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
| 投稿者 | トピック |
|---|---|
| 未登録ゲスト | 投稿日時: 2007-10-11 13:49 |
変数属性の設定についてEA7で作成した構造体の各フィールドに対して、gccの拡張機能の
__attribute__ ((packed)) を付加してヘッダファイルに出力する方法を教えてください。 |
|
| tkouno | 投稿日時: 2007-10-11 14:13 |
EA Administrator ![]() ![]() 投稿: 3939 |
Re: 変数属性の設定についてまず、現時点では__attribute__キーワードには
Enterprise Architectは対応しておりません。 この点は申し訳ございませんが、ご理解いただけますと助かります。 (下記の修正を行い生成したソースファイルは、そのままでは 読み込むことはできない、ということです。「プログラム言語の マクロとして「__attribute__()」を追加することで ソースコードを解釈できるようになります。) 出力を変更する場合には、コード生成テンプレートを編集します。 少し長くなりますが、ご確認ください。 1. メインメニューから「設定」→「コード生成のテンプレート」を選択 2. 左上の「言語」でC++を選択 3. 左側のテンプレートの一覧で「Attribute Declaration」を選択 4. 左下の「ステレオタイプ指定のテンプレートの追加」ボタンを押す 5. 表示されるダイアログで、「クラス」に「struct」を選択する。「特性」は空のまま。OKボタンを押す。 6. 左下の「ステレオタイプの上書き」一覧で、今作成した「struct」を選択する 7. 右側のエディタの領域に、以下の内容をコピーする(既に内容が表示されている場合には、上書きになります) ---ここから %REPLACE(attTag:"Attribute", ";", "\n")% %PI=" "% %attStatic=="T" ? "static" : ""% %if attStereotype=="property" or attStereotype=="event"% %attTag:"virtual"? "virtual"% %attStereotype% %else% %attTag:"initonly" ? "initonly"% %attConst=="T" ? "const" : ""% %attVolatile=="T" ? "volatile"% %attTag:"mutable"=="true" ? "mutable"% %if attTag:"literal" != "" and attInitial != ""% literal %endIf% %endIf% %RESOLVE_QUALIFIED_TYPE("::")% %PI=""% %attContainment=="By Reference" ? "*" : ""% %attName% %if attCollection == "T" and attContainerType != ""% %attContainerType% %endIf% %if attTag:"literal" != "" and attInitial != ""% = %attInitial% %endIf% __attribute__ ((packed)); ---ここまで (注:この内容は、もともとのテンプレートの内容を変えずに、最後の1行を追加しています。 無駄な部分が多いので、必要であればカスタマイズしてください) 8. 右下の「保存」ボタンを押す 9. コード生成を行う (ただし、既にソースコード内に属性が存在する場合には、反映されません。) ぜひお試しください。 また、このように、コード生成テンプレートを利用すると 出力結果を変えることができます。ドキュメントやヘルプファイルで 詳細を説明していますので、ぜひご覧ください。 |
| 未登録ゲスト | 投稿日時: 2007-10-11 15:36 |
Re: 変数属性の設定について目的とする出力がおこなえました。
実際にはご指摘のようにヘッダ部にマクロ定義をおこない構造体部はマクロの記述をおこないます。 ソースコードとの同期を使わなければラウンドトリップエンジニアリングとしての機能としては充分です。 迅速な対応ありがとうございました。 |
|
| スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |




