|
|
我对syslink进行交叉编译到arm,但是出现如下错误:9 Y F3 c I# _) W: _8 v
/home/tl/Projects/Xdl-build-arm/../../qt/Qt4.7/include/QtCore/qtconcurrentrunbase.h:65: error: two or more data types in declaration of 'parameter'3 }# y3 A* s' l8 j& k( _/ J
- e# E% ]/ q* r4 B0 {; o' g这个头文件内容如下:& T# I4 j, p3 K
#ifndef QTCONCURRENT_RUNBASE_H+ l% I/ ^# K W- d7 u
#define QTCONCURRENT_RUNBASE_H# U$ {: Y! n: B& n# P
7 V# p0 k( R3 b2 l7 S5 E' @' L
#include <QtCore/qglobal.h>
8 W! ^/ a; k4 g
5 G3 W Q" B9 s( b#ifndef QT_NO_CONCURRENT0 T( g; m9 v: d0 A0 U
, v' Y1 ^: h8 Y3 C/ _3 ]% P#include <QtCore/qfuture.h>- Q' b X# v# U2 Y4 ~+ c' T
#include <QtCore/qrunnable.h>5 Y- W# b7 Q, F6 |/ E
#include <QtCore/qthreadpool.h>
* Z. K& _4 C9 |% o" E. f8 T7 w4 ?+ ]
% q, J' K0 L8 @7 cQT_BEGIN_HEADER
w7 ^' f! \9 m6 f: I. Q6 ^) FQT_BEGIN_NAMESPACE
( D, Y4 v1 E% C' I- [8 R& J" [4 J, ^: D- t
QT_MODULE(Core)
' }* {# L) ?8 q
1 u. G: K3 U1 o& s, D#ifndef qdoc' F( j! N+ J. W; ^+ ~' F4 e" k4 k- y
* v" o; `0 H# q8 R' M/ r# r9 Enamespace QtConcurrent {
4 t; d. _) T; R& @/ ]1 v7 V, u) h% w/ L
template <typename T>
: T3 }1 P s3 x6 S7 t, Z+ pstruct SelectSpecialization7 _" }8 P6 |/ l) J9 ~
{3 ^% J$ L L& \
template <class Normal, class Void>" j4 v0 I, K/ y8 @0 [
struct Type { typedef Normal type; };1 X! O1 {$ `& s' a
};- V9 v6 [! ^. M# o, T6 _0 v. }
5 f" b, Y2 |" @6 Y; l& I3 m' R! E/ ^
template <>
. n; h. a+ u# j0 T, a& j% v! T5 ostruct SelectSpecialization<void>
* z$ O# h( q4 e \$ d% S{' D: i/ ~$ q$ ]+ x
template <class Normal, class Void>2 J$ d! p# e/ r) Y5 G, p3 D
struct Type { typedef Void type; };0 {2 x2 e5 b: S! |5 q" y
}; x7 r1 y' ^. {4 V
" A1 [, l, h9 z( M) e2 w3 y2 q
template <typename T>' p7 k- }/ u) ^; ` k; `' E
class RunFunctionTaskBase : public QFutureInterface<T> , public QRunnable- A+ @- b" F% L% d, a, v$ E5 R
{4 ~- C. L4 ~! U+ }7 n6 r
public:
2 z; K& Y1 I' L% G! Z2 ^. t7 A QFuture<T> start()
' i+ P7 w, ^- u4 R9 Y, Y {7 O2 ]% Z# A. y. Q1 ^
this->setRunnable(this);( e4 e/ Z2 e% W) R, E
this->reportStarted();% ~0 v4 p9 L/ q0 \
QFuture<T> future = this->future();4 L/ k! K F$ J3 d: z1 X
QThreadPool::globalInstance()->start(this, /*m_priority*/ 0);2 f2 N' q0 p% Y0 z0 r0 ]
return future;2 e9 L v4 P) N
}
: w9 C" ^- n5 [ F% b) ~1 A
8 I- o( a4 @$ o n" I# i0 Q void run() {}6 a1 ^4 j4 v6 y1 N4 A' u
virtual void runFunctor() = 0;
4 j8 p# [* @3 v5 [* V3 d};. e( c1 G2 N' G$ r4 f
4 D# {4 z5 X% x/ F/ t4 E- e
template <typename T>% E/ S: D1 {, d. w9 M4 c
class RunFunctionTask : public RunFunctionTaskBase<T>
' p( `1 i% t: p! I: _2 f ^3 H# b{
: ^7 l9 R$ [/ j1 E. d, C, Jpublic:, L' t6 {- e& z& G2 o
void run()
& D; {: D; J2 B+ _6 u6 s {
( D5 V) b' L1 H+ { if (this->isCanceled()) {
% p W- c6 ~' K3 l* c this->reportFinished();
" s- `! u1 z1 {- B, a6 x return;& h( p+ d* @9 V5 ?# }
}6 q) s( l7 S- C' t* p5 r' Z9 w {# @" V
this->runFunctor();
3 {, Z) w5 a9 [, a, ` this->reportResult(result);
1 k) K8 V2 h% k) c3 s/ w% B+ G7 H this->reportFinished();+ ^ V" t" s6 A: h! t
}
4 ~& Q# V* m4 z$ M T result;
7 d' Y) Q9 K8 b0 {4 r; }) E};" D/ r+ G& _& A+ {2 R* E9 n: w9 q- \
; o0 \2 v7 r1 F( j: i
template <>: ~) R) I& \5 H7 z2 T% v
class RunFunctionTask<void> : public RunFunctionTaskBase<void>! |' G. T0 n+ E8 l* ]6 i& e
{+ A. E# n7 L9 q
public:
* `2 ]4 w6 g& X/ r* s* p: u) l void run()) S5 o1 I8 }3 G2 p
{% E* w7 Q* P) B
if (this->isCanceled()) {, Z( M, X' J+ Y" [& g7 F6 r4 s
this->reportFinished();3 _9 Y0 _' o. A0 p
return;
3 `& P$ N# |/ G. q+ N$ [' Y7 p }
: W! o0 A; K2 c; k& [. u this->runFunctor();
( A2 w9 I6 c. r' V0 a6 h# {' `4 [ this->reportFinished();
. c% K8 L' j% H( G# X0 s }6 f/ }0 x7 h" y! E" h& X! U
};
- w* a7 s" x! {( d( n4 M3 E& ~
) _( o; y# h W# T' k) Z( v! S} //namespace QtConcurrent5 I3 w( S; K! d3 z% u# l
$ T# x B, x8 B8 |7 a% ~" C#endif //qdoc3 u: Z7 q( U# [- u P+ C Q& D4 Q
& s D, E, d" d3 cQT_END_NAMESPACE
8 v" v1 @5 u" H" ]QT_END_HEADER
' M2 m: \" F) t3 O2 k4 E+ i
# O+ M7 f6 t$ E' t5 x#endif // QT_NO_CONCURRENT
' U- w1 G$ S* h, H7 v$ p! V
. |" a1 A, Y( C2 W5 \#endif/ ?* B( W* L4 }4 s3 t
( L& J8 U3 c: | |
|