#ifdef
たとえば、条件付きの前処理を行ったレガシーコードがいくつかあり、マクロ#else
の使用が見つかった場所があります。__attribute__
簡単な調査を行ったところ、GNU コンパイラに固有のものであることがわかりました。MSVC10 コンパイラを使用して Visual Studio 2010 でこのレガシー コードを使用する必要があります。例は次のとおりです。#ifndef
#ifdef
#ifdef __tone_z__
static const char *mcr_inf
#else
static char *mcr_inf
#endif
#ifndef _WINDOWS
__attribute__(( unused )) % this is causing all the problem!!
#endif
= "@(#) bla bla copyright bla";
#ifdef __tone_z__
static const char *mcr_info_2a353_id[2]
#else
static char *mcr_info_2a353_id[2]
#endif
__attribute__(( unused )) = { "my long copyright info!" } ;
それが非常に貧弱に計画されたコードなのか、それとも私の誤解なのかを理解するのに本当に苦労しています。__attribute__()
このディレクティブで通常のコンパイラとリンカーのエラーを回避するにはどうすればよいですか? C2061 エラー (識別子が見つからない/不明) が発生し始めました。必要なすべてのヘッダー ファイルを取得しましたが、欠落しているものはありません。GNU コンパイラを除いて (これは望ましくありません!!)。
また、Windowsでコードを作成すると、行末文字;
も台無しになっているようです....うーん....つまり、UNIXの行末とWindows EOLを意味します。本体の変更...._WINDOWS についてプロパティ シートで定義できますが、EOL 文字認識を自動的に調整することはできません。
どんな助けでも大歓迎です!ありがとう。