DPCT1077
目次
DPCT1077#
メッセージ#
<macro name> が標準の SYCL* タイプを再定義しているため、競合が発生する可能性があります。
詳細な説明#
インテル® DPC++ 互換性ツールは、コードが標準の SYCL* タイプを再定義していることを検出しました。インクルードされている SYCL* ヘッダーファイルで競合が発生する可能性があります。
修正方法の提案#
標準の SYCL* タイプと競合しないようにマクロの名前を変更します。
例えば、以下のオリジナル CUDA* コードについて考えてみます。
1 // test.h
2 inline void bar(cudaDeviceAttr attr) {
3 ...
4 }
5
6 // test.cu
7 #define int2 int32_t
8 #include "test.h"
9
10 void foo() {
11 int2 a;
12 ...
13 }
このコードは、以下の SYCL* コードに移行されます。
1 // test.h
2 #include <sycl/sycl.hpp>
3 #include <dpct/dpct.hpp>
4
5 inline void bar(int attr) {
6 ...
7 }
8
9 // test.dp.cpp
10 /*
11 DPCT1077:0: 'int2' redefines a standard SYCL type, which may cause conflicts.
12 */
13 #define int2 int32_t
14 #include "test.h"
15
16 void foo() {
17 int2 a;
18 ...
19 }
このコードは次のように書き換えられます。
1 // test.h
2 #include <sycl/sycl.hpp>
3 #include <dpct/dpct.hpp>
4
5 inline void bar(int attr) {
6 ...
7 }
8
9 // test.dp.cpp
10 #include "test.h"
11
12 void foo() {
13 int32_t a;
14 ...
15 }