掲示板一覧 - トピック一覧 Enterprise Architect 全般
#if 0 #else #endif で囲まれたメソッドが読み込まれない |
| スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
| 投稿者 | トピック |
|---|---|
| sugimoto | 投稿日時: 2007-11-26 17:00 |
EA Administrator ![]() ![]() 投稿: 1895 |
#if 0 #else #endif で囲まれたメソッドが読み込まれない○ご指摘
以下のようなC++のヘッダを読み込みんだところ、funcC()がクラスに 読み込まれませんでした。読み込み時にエラーは発生しませんでした。 class ClassA { public: void funcA(void); #if 0 // void funcB(void); #else void funcC(void); #endif }; ○回答 ご指摘の現象を確認いたしました。 現状は、#if の値に関わらず、#else ~#endif 間の操作や属性に つきましては、クラスに読み込まれていないようです。 (#if と #else の間にコメントアウトされた箇所がありますが、 今回の現象への影響はないようです。) 弊社ではソースコード読み込み時のプリプロセッサにつきましては、 EAは判断していないという認識を持っておりましたので、この現象に つきまして、開発元に連絡し、調査を進めて参ります。 大変申し訳ございませんが、クラスに読み込みたい情報につきましては、 #else ~#endif から外して読み込んでいただきますようお願いいたします。 |
| sugimoto | 投稿日時: 2007-11-28 13:29 |
EA Administrator ![]() ![]() 投稿: 1895 |
Re: #if 0 #else #endif で囲まれたメソッドが読み込まれない本ご指摘について、開発元に確認を行いました。
現状、Enterprise Architectでは、ソースコード読み込み時の プリプロセッサにつきましては、一切判断していないという 認識をもっていたのですが、実際には、現状、一部判断を 行っておりました。 現在の動作としまして、プリプロセッサを完全に判断することは コンパイラのような機能を有する必要があり困難であるため 行っていないのですが、 ・最初のブロック(今回の場合は、#if~#else)は読み込みを行い、 ・それ以降のブロック(今回の場合は、#else~#endif)は読み込みを行わない、 という動作を行っています。 #if 0 なのか #if 1 なのかという判断は行っていません。 すべてのユーザーにとって上記対応が有効ではないことは認識 しているが、完全な対応は困難であることから、現状は上記の ような対応を行っているという状況です。 プリプロセッサの判断について、完全な判断は困難だと思いますので、 恐れ入りますが、Enterprise Architectに読み込むソースコードに つきましては、プリプロセッサの最初のブロックに情報を記述いただ きますようお願いいたします。 今回の場合は、以下のように、#if~#else と #else~#endif間の 情報を置き換えていただければと思います。 #if 1 void funcC(void); #else // void funcB(void); #endif お手数をお掛けいたしますが、ご対応のほど、よろしくお願いいたします。 |
| スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |




