|
|
我对syslink进行交叉编译到arm,但是出现如下错误:% d f, s; A9 Z
/home/tl/Projects/Xdl-build-arm/../../qt/Qt4.7/include/QtCore/qtconcurrentrunbase.h:65: error: two or more data types in declaration of 'parameter'+ k% s+ p$ O* C, k* N
3 ~, V3 d: m5 e; ?4 ]6 w
这个头文件内容如下:
8 U: [! Q- m6 ^5 f' n2 b#ifndef QTCONCURRENT_RUNBASE_H$ B3 ^1 @4 g2 v; Y+ M5 ]; z
#define QTCONCURRENT_RUNBASE_H" U8 ^: J, S: \+ U
& S$ c3 O! t" C+ }3 ~. u
#include <QtCore/qglobal.h>+ k& b" l* B5 L n( A
3 H- W) J0 l5 u j" P#ifndef QT_NO_CONCURRENT; }. v1 Y4 ^) u6 G; I, i5 r1 _9 V
, T) q% W! g i# q# @7 V#include <QtCore/qfuture.h>7 B4 k" V2 l( f2 c( C7 {
#include <QtCore/qrunnable.h>
) z& [% L3 O# B* p8 c8 @#include <QtCore/qthreadpool.h>
% G: T: k2 n7 ]/ n
' a. r6 l# s$ W6 C3 z/ P4 I o2 zQT_BEGIN_HEADER
% x: F, G9 H) R$ D' @QT_BEGIN_NAMESPACE
- {* N* V ] l1 P, ^& N+ P# S5 q. v& _( o
QT_MODULE(Core)
, G C0 O( |7 t4 u* t3 R2 V3 |, l+ z. `* {5 |
#ifndef qdoc s% R$ I9 Y, F5 i
/ x: H6 r) g- F9 D) p. w/ ^
namespace QtConcurrent {) t j/ Q3 j' E" H! k4 ^/ N$ h: b& u8 |
! t$ Z* k' p* U( a0 v( `; c1 @1 H: U' P4 J
template <typename T>9 B0 p0 ~- _& a# O) b' U
struct SelectSpecialization
' S! \" g, C$ n7 d$ E) R0 g{) F8 A, e, K; x1 `6 R. i
template <class Normal, class Void>
, ?" O9 I/ t1 V& K$ } struct Type { typedef Normal type; };8 f* R) k6 |/ s3 g7 J
};
: q3 v; c0 g. X! a- i4 C" Z( D1 n9 n" m n* b* [8 @' P/ B! Q8 S
template <>
5 r5 x% c- g9 k p. Zstruct SelectSpecialization<void># \9 d4 H+ ^- q8 v6 k( Y: {8 p! J
{! Q- L% }, u2 S4 S( R5 B$ y& ^
template <class Normal, class Void>( B' w/ J- s) ]4 L7 ]7 T
struct Type { typedef Void type; };9 `/ N, {1 u- C( e6 S7 z) B* U
};
$ F8 n7 o6 J; I: T$ }
" a; z" c( k/ M6 S" jtemplate <typename T>7 p8 _! K" p" l0 J
class RunFunctionTaskBase : public QFutureInterface<T> , public QRunnable+ n, G, [* @9 g8 M/ r6 D* }
{
: l6 I, m! j: N1 ]* X3 Opublic:
6 f) H1 C7 Q# A2 |, d QFuture<T> start()9 ^9 l# J/ |3 [: b; b
{
* K% j: x+ b+ |) d2 a& P9 w this->setRunnable(this);5 P+ O0 y& s! h2 ]$ |
this->reportStarted();
6 w/ }# i# B9 _( V QFuture<T> future = this->future();
; d8 \) r4 G/ F: ]$ I1 B: y7 [ QThreadPool::globalInstance()->start(this, /*m_priority*/ 0);, H9 Z" P# P% y' ]8 g' N
return future;& k; B3 W$ S. N/ L+ T
}3 V( I2 u& N) d$ K
: C# p* L( w' x! Q9 G! o/ y1 A void run() {}
- a+ ?/ S& M' [* ~% Z virtual void runFunctor() = 0;
( _. G- ~& ?* [};
$ O$ u) \$ \9 O* l4 L- a" R! c; Y% Z' y
1 Q, K6 ^( n; d! Q- y2 Q9 w1 gtemplate <typename T>( Q) O, r, @) b- J5 p) ^+ c: |; @
class RunFunctionTask : public RunFunctionTaskBase<T>/ n: L# ]) I; z" W. _
{% f {% z6 x. f) S% ?1 k7 e. v
public:
- n3 j8 m/ k3 ?1 c void run()0 J; `( s7 O" b% `
{
1 L/ d6 k/ j3 ?) Q if (this->isCanceled()) {
7 E1 W8 B O p' d this->reportFinished();8 ]8 c8 S4 ^" J# |7 n7 X" G: q5 z
return;
' p8 X5 w. Y7 _* H+ E+ X }
$ M& O4 r( Q# y+ [ this->runFunctor();
. R' r' E3 v( c' y0 C( f+ E this->reportResult(result);
w/ x) q! d: v1 @ this->reportFinished();
) R6 j1 S7 A1 k }1 s" b- n2 k/ o; [8 S- ]2 j- |
T result;3 }- ]8 W: U: N4 J
};5 D2 p" L5 f' W) S; [9 l) T- r8 \% r
/ M& D1 T: t, K1 W7 S) U" w* g
template <>
+ w7 Q! x# T$ h& oclass RunFunctionTask<void> : public RunFunctionTaskBase<void>0 z' c* w# B* }) k! T- Q
{4 U4 ]. E- n# D3 Z; |, t: O
public:
& ?( s$ M( L1 I+ j7 k" }/ h void run()4 P2 f& l& w/ v* i4 G# Z$ @
{
. f4 ~- L8 Z0 G! a7 E if (this->isCanceled()) {" i* N1 d- k) B' V0 L3 S
this->reportFinished();
/ S Y5 t7 l: N, e return;
. b7 T4 E$ U0 f }
) _: o7 x) Y. ], U, K/ l) E, [% P# M ~4 v this->runFunctor();" u# S+ m. ^$ b
this->reportFinished();
5 L& y& b0 N7 p, y7 J! Q }
2 C1 r: b* o6 t: t( t% ]};5 }( i# g1 ]& J! z% s/ G+ q5 H+ Q
- k1 A$ K. m. A( h2 n, g8 E} //namespace QtConcurrent
; u! }' Y, O+ e' g+ J2 ~! \# P1 m' B6 t3 n. j
#endif //qdoc
M3 @. y1 b7 m! r- n. Q7 s# l
1 ~+ W. r7 e% y& W; WQT_END_NAMESPACE
) N& g- _- s' G9 }; a% zQT_END_HEADER
2 L, ^5 C; O" x9 E
4 i8 B4 E5 Z: i {, w8 o n7 x+ R#endif // QT_NO_CONCURRENT6 U# V* N2 H, [% P6 R2 I
* s- U n# I" s& V% l' h) \#endif" p% I' D* ] J) G
4 t# i, M9 V- q5 s, Q |
|