2009-10-06 120 views
0

我正在嘗試使用OpenMP在Visual Studio 2005 Professional中創建一個並行循環。我已經包含了omp.h並指定了/ openmp編譯器標誌。但是,我甚至無法獲得最簡單的並行循環編譯。Visual Studio 2005中的OpenMP

#pragma omp parallel for 
for (int i = 0; i < 10; ++i) 
{ 
    int a = i + i; 
} 

上述情況會在#pragma行產生編譯錯誤C3005。

谷歌並沒有太多的幫助。我只發現一個用戶遇到過類似問題的日本網站。沒有提及決議。

一個標準的並行塊編譯正常。

#prgram omp parallel 
{ 
    // Do some stuff 
} 

直到您嘗試添加for循環。

#pragma omp parallel 
{ 
    #pragma omp for 
    for (int i = 0; i < 10; ++i) 
    { 
     int a = i + i; 
    } 
} 

以上原因會導致編譯器錯誤C3001。看起來'for'令編譯器感到困惑,但它不應該是。有任何想法嗎?

+0

很奇怪。我剛剛編譯了所有三個代碼片段,沒有任何問題。 – macbirdie

回答

0

我發現了這個問題。一些天才的定義下面的宏深的標題中:

#define for if (false) ; else for 

我唯一的猜測是這是用來獲取循環到範圍內聲明的變量正確地在Visual C++ 6.取消定義或註釋掉宏解決了這個問題。