ホーム » VC OpenMP » error C3010: ‘return’: OpenMP

2025年1月
 1234
567891011
12131415161718
19202122232425
262728293031  

カテゴリー

アーカイブ

ブログ統計情報

  • 103,852 アクセス


error C3010: ‘return’: OpenMP

以前,OpenMP を有効にしないで使用していたコード.
最近のコードで,OpenMP を有効にしたプロジェクトが増えてきた.
それでビルドしていると C3010 のエラーになってしまう.


関連する部分を,単体テスト用の cpp に張り付けてビルド.
OpenMP   error  C3010

11:21 でビルドが開始されました...
1>------ ビルド開始: プロジェクト: C_drv, 構成: Debug Win32 ------
1>C_drv.cpp
1>L:\Document\Develop\VC_Test\PC_doc\C_drv\C_drv.cpp(60,36): error C3010: 'return': OpenMP 構造化ブロックからのジャンプは許可されていません
1>L:\Document\Develop\VC_Test\PC_doc\C_drv\C_drv.cpp(64,45): error C3010: 'return': OpenMP 構造化ブロックからのジャンプは許可されていません
1>L:\Document\Develop\VC_Test\PC_doc\C_drv\C_drv.cpp(67,4): error C3010: 'return': OpenMP 構造化ブロックからのジャンプは許可されていません
1>L:\Document\Develop\VC_Test\PC_doc\C_drv\C_drv.cpp(69,3): error C3010: 'return': OpenMP 構造化ブロックからのジャンプは許可されていません
1>プロジェクト "C_drv.vcxproj" のビルドが終了しました -- 失敗。
========== ビルド: 成功 0、失敗 1、最新の状態 0、スキップ 0 ==========
=========== ビルド は 11:21 で完了し、06.452 秒 掛かりました ==========

OpenMP のコードの部分を一つの関数とすることで対応.

bool	NET_is_valid	(LPCTSTR path)
{
	tstring	net_root = ::Path_Get_net_root(path) ;
	bool	is_valid = false ;
	#ifdef	_OPENMP
		#pragma	omp	critical	(NET_is_valid)
	#endif
	{
		is_valid = ::NET_is_valid_critical(net_root) ;
		}
	return	is_valid ;
	}

何故か,VC 2015 と 2017 ではエラーにならなかった.

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.
%d人のブロガーが「いいね」をつけました。