OpenMP エラー 1002

—————————
致命的なユーザー エラー 1002:
—————————
同一名の 1 つで ‘#pragma omp critical’ が不適切に入れ子にされています

2.9 ディレクティブの入れ子

ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.ja/dv_vcopenmp/html/6565a43c-fd2d-4366-8322-8d75e1b06600.htm

http://msdn.microsoft.com/ja-jp/library/azb90x99(v=VS.80).aspx

局所的になる様に,呼び出し元での "#pragma omp critical" を削除.

class Profile {
  …
protected:
    LPCTSTR  LastProfileName ;
    CString     C_T_ProfileName ;
  …
  } ;

BOOL Profile::SaveProfileName(void)
{
  CWinApp* app = AfxGetApp() ;
  if (app== NULL) { return FALSE ; }
  LastProfileName = AfxGetApp()->m_pszProfileName ;
  AfxGetApp()->m_pszProfileName = C_T_ProfileName ;
  return TRUE ;
  }
BOOL Profile::LoadProfileName(void)
{
  AfxGetApp()->m_pszProfileName = LastProfileName ;
  return TRUE ;
  }

omp critical ではなく,MFC 同期クラスを使用する様に変更.
//  以下は,テスト用のコード  
BOOL Profile::?et??? (LPCTSTR lpszSection,LPCTSTR lpszEntry,…)
{
    … 
    CMutex m(FALSE,MN_LPN) ;
    m.Lock() ;
// return        ???Profile??? (lpszSection, lpszEntry, …) ;
    BOOL ret = ???Profile??? (lpszSection, lpszEntry, …) ;
    m.Unlock() ;
    return ret ;
    }
//  MFC 同期クラスの呼出しはコストがかからない様に修正する 


  にほんブログ村 IT技術ブログへ



コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください