|
|
我对syslink进行交叉编译到arm,但是出现如下错误:$ N0 L& b- G+ B6 m6 _: C' b/ c
/home/tl/Projects/Xdl-build-arm/../../qt/Qt4.7/include/QtCore/qtconcurrentrunbase.h:65: error: two or more data types in declaration of 'parameter'! x( o" m5 w7 C$ u% W% r
|3 Q( K: i/ b+ L( z这个头文件内容如下:
! Z% s% R$ P' Y6 @1 [#ifndef QTCONCURRENT_RUNBASE_H u1 U8 V7 k/ T- w5 l
#define QTCONCURRENT_RUNBASE_H. z; G8 t. _6 j7 k
2 n$ r) E8 u( c% b. H5 o3 w
#include <QtCore/qglobal.h>
2 M. m1 p1 a/ U% K2 O8 m! u4 B, U8 M5 V- W* l6 ~! g
#ifndef QT_NO_CONCURRENT
6 f1 [8 m8 \! m! L2 }6 W+ Q/ L- _
#include <QtCore/qfuture.h>0 J A0 b) {/ r1 ` N% K
#include <QtCore/qrunnable.h>
* I1 _, \. H% k+ k4 l/ n#include <QtCore/qthreadpool.h>
+ _$ _5 N- L6 J |! s+ B E# w# w
2 Y- }6 ]( _$ O1 VQT_BEGIN_HEADER& o2 O3 ?5 R I) ~1 V) ]
QT_BEGIN_NAMESPACE
, @$ q, X: T! h! d/ _/ d6 p* `" y9 \ M! m5 d( V$ b
QT_MODULE(Core)! K+ x$ F1 u& E1 G- R
( H' I9 _& [, n% H, @' ^! M5 k
#ifndef qdoc8 \6 Q: K. J8 e5 n" {8 S
( z M# U; q5 L. u9 p* o; v
namespace QtConcurrent {
2 C/ |7 S8 T' E) c& L1 Z$ S: }# R1 i: I: C/ |/ ?+ v
template <typename T>
8 _$ X) `- v+ |' s5 G& W2 Pstruct SelectSpecialization* V# l7 h* U# E
{
8 y+ {7 e; f! q' q% |0 m template <class Normal, class Void>9 P- B$ {) i: a' {+ K
struct Type { typedef Normal type; };
/ l7 ?) {) S8 c) Y2 `" N};; T# c$ m Y9 Z4 y4 s% f8 L+ y
5 a- |1 T% P+ ?; X' M& [. stemplate <>4 [% Y. F0 @/ i, J6 m* I+ v: `
struct SelectSpecialization<void>
. }+ K6 i2 f: Y8 p9 v" W0 q, ]{
) g% p& ]* q( r8 C1 {0 h, O8 T) ? template <class Normal, class Void>
! b& \% A% q1 K# @6 e/ P% {' R struct Type { typedef Void type; };
$ z9 r( m+ R4 }# h k( _};- V, @6 x3 b Z+ ~/ [
2 `+ p4 s, v% ~3 [! J
template <typename T># i# U$ |0 G6 i$ v3 m4 U1 s0 } T
class RunFunctionTaskBase : public QFutureInterface<T> , public QRunnable, I5 ?& b- j+ _% {
{
7 l- h$ d' L+ ^4 b5 rpublic:# o% l3 {2 m+ D1 D- W: T) c" p$ `
QFuture<T> start() m1 D* m% i' j% }" h3 t* h
{3 l# U* T& S0 E% p
this->setRunnable(this);
* D: ]" a9 W! w7 g; ~ this->reportStarted();: o; S" T( p+ Q5 c
QFuture<T> future = this->future();5 ], ]7 k2 H8 ~& u
QThreadPool::globalInstance()->start(this, /*m_priority*/ 0);
! y) h7 R* o' ~5 @4 l) c return future;) c) J+ B* u; z/ ]$ b
}
2 |: m6 P4 O* ^. P8 w [
5 Z( k$ [, G7 u5 W void run() {}1 k7 V0 f+ n4 O! U
virtual void runFunctor() = 0;- b8 P& P) v/ @' I+ F: R
};
0 V1 U1 o, s# J
; W3 m% o' c+ [6 j4 p9 k7 ^template <typename T>% M7 O, l5 v% s a0 x
class RunFunctionTask : public RunFunctionTaskBase<T>
3 L o ~0 y$ O+ X{
* R& M+ ^8 F( @4 hpublic:/ X: s+ `! E2 Y
void run()
( f9 q4 V- f; D7 Y0 @$ R2 I" Q7 a6 K {
& S4 T5 x6 c( Y1 t3 y3 S \ if (this->isCanceled()) {) N) v+ e$ {% U$ n* \; Y [
this->reportFinished();/ i/ ?4 f3 w# p; C# ?
return;
- X, k0 k% s3 G/ \ }3 I8 q$ w3 j1 q" b, \& m
this->runFunctor();# ^, ` E) m8 h8 A w
this->reportResult(result);
q4 u9 v4 z/ W! a this->reportFinished();( t) e. a( k* a, P$ P. W* j& x
}) ]0 l5 ] w% f4 d# E* X" D: ^
T result;6 r$ j( j; N& M
};. v( R# k8 V- S9 M# C- N Z
! [: y7 m/ [3 W1 O/ ftemplate <>2 z7 `) Z) D M6 _. W# r
class RunFunctionTask<void> : public RunFunctionTaskBase<void>
; B0 @1 ?( p% {6 [. Q8 u: x{9 O5 A( y; v6 N
public:
y" t* a7 }: Y/ P. o void run()
- k9 ~5 T- S& X4 a3 {- y) M {
% Q4 B: B6 U; m7 U- b% j$ c4 Q1 Z$ b; w if (this->isCanceled()) {& u% A: M! M( a2 i
this->reportFinished();
; H% M z+ ?$ o; k- K- N8 @ return;7 |' D, Q( {- }2 |# `5 g. S
}- a3 S( s- C$ Q& U2 Z
this->runFunctor();- h# F. J" x0 G8 ^* b
this->reportFinished();5 v7 J% j- r* M3 } o- C
}4 h4 M2 X. W) k) H. r% Q
};+ R) H; W0 F( I" R' f5 O
5 s" I! t" B% G1 R/ B} //namespace QtConcurrent
" G9 I" ~' N* ]
# i( z8 `+ h4 C/ d# g) W#endif //qdoc
6 q& T c0 j# C- k
( D- ^7 p% {! K# \' xQT_END_NAMESPACE7 O# N; ?2 K3 l1 I
QT_END_HEADER
1 i7 a, r6 `' Q1 o
$ u; x8 f! a+ W5 o2 u q" l3 Y3 ?#endif // QT_NO_CONCURRENT8 d6 _( W* m- p+ Z
* i! H1 T9 \- ]9 N/ C7 g#endif* K# @! k8 T& A$ N$ n! [. K
: v% {9 }& C0 l/ J0 k' J |
|