作者wope (獨立黑色色彩)
看板C_and_CPP
標題[問題] CPPCheck 會警告 OMP 的計數器?
時間Thu Oct 9 15:10:20 2014
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
GCC 4.7.2 + MinGW64
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
OMP.h
問題(Question):
CPPCheck V1.66 會警告可執行且執行成果正確的語法
餵入的資料(Input):
無
預期的正確結果(Expected Output):
不要警告
錯誤結果(Wrong Output):
發出警告
程式碼(Code):(請善用置底文網頁, 記得排版)
#include<stdio.h>
#include <windows.h>
#include<omp.h>
int main(void) {
int Total=60;//一共要跑幾次 <--CPPCheck 警告
int Count=0;//目前跑了幾次 <--CPPCheck 警告
int Num_threads = 16;//用多少執行緒來跑 <--CPPCheck 警告
#pragma omp parallel num_threads(Num_threads)/開始平行
{
#pragma omp for
for(int i=0;i<Total;i++){
printf("\n i=%d",i);
#pragma omp atomic
Count++;//計算完成了幾個
printf("\n己完成 %f%%",(double) Count / Total * 100);
}
}
system("pause"); //暫停功能
return 0;
}
補充說明(Supplement):
警告內容:
The scope of the variable 'Total' can be reduced.
The scope of the variable 'Count' can be reduced.
The scope of the variable 'Num_threads' can be reduced.
CPPCheck 的例子如下:
Warning: Be careful when fixing this message, especially when there are inner
loops. Here is an example where cppcheck will write that the scope for 'i'
can be reduced:
void f(int x)
{
int i = 0;
if (x) {
// it's safe to move 'int i = 0;' here
for (int n = 0; n < 10; ++n) {
// it is possible but not safe to move 'int i = 0;' here
do_something(&i);
}
}
}
When you see this message it is always safe to reduce the variable scope
1 level.
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.245.65.183
※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1412838623.A.3F2.html
※ 編輯: wope (60.245.65.183), 10/09/2014 15:11:12
→ azureblaze: 你知道他是在檢查什麼嗎 10/09 15:43
推 chosen4040: 開始平行前面少個斜線/有影響嗎? 問一下 10/09 16:41
→ carylorrk: cppcheck 在 openmp 上不會有問題嗎? 10/09 17:58