|
|
我对syslink进行交叉编译到arm,但是出现如下错误:, U( B8 Z$ W# Y/ y9 g
/home/tl/Projects/Xdl-build-arm/../../qt/Qt4.7/include/QtCore/qtconcurrentrunbase.h:65: error: two or more data types in declaration of 'parameter'
0 d: \* y% j% \4 t1 O. j
" ~2 Q4 @: h7 T* s4 J5 V7 l这个头文件内容如下:
! R/ U( j9 d( \$ H#ifndef QTCONCURRENT_RUNBASE_H& L ?" B3 s+ H4 G& N2 `1 B/ q& x. ]& R
#define QTCONCURRENT_RUNBASE_H4 Y. C; g. R; v: m! E
6 s6 j% n, v1 c' S1 v7 z7 z
#include <QtCore/qglobal.h>
0 x0 x8 P; y) F
4 n& ?! H9 U# y#ifndef QT_NO_CONCURRENT
& @# |6 r- Y$ D9 O2 x( J: o( `
2 @/ C& y6 q: ^5 t#include <QtCore/qfuture.h>+ \9 d5 M M$ K: R3 B
#include <QtCore/qrunnable.h>
. x. y/ E. o2 ^" `; v#include <QtCore/qthreadpool.h>
( v8 P6 `0 v# p/ _; m; B' N! m
QT_BEGIN_HEADER
% t3 o, M; L" |/ E6 ^QT_BEGIN_NAMESPACE9 F3 a2 a" s2 a1 ~, G
7 [9 \2 B( a# q2 q$ a' S0 }/ L; C
QT_MODULE(Core)
O( @5 T/ T6 P7 ^0 D
, J# Y1 M# w0 ]+ s8 t#ifndef qdoc. o6 {0 G! ?7 O& _2 ?/ a
B2 s" O6 w* l# }6 F1 Z
namespace QtConcurrent {
! l9 p9 V/ L' \" n8 N2 k: }/ \# `$ g( I/ o0 c; a2 W3 H, t
template <typename T>! @& Q L& x0 O0 N I
struct SelectSpecialization
6 C7 \% a& n0 ]8 Q{. S; b1 v4 Q# U2 \! u) d }
template <class Normal, class Void>
$ b8 {. u. x$ j, E$ T1 X struct Type { typedef Normal type; };
+ q2 k7 J+ _' B. {* o! k: w% x};
5 K" Q- g- K1 e# H$ D
) g. t/ J% i& y+ y, _1 w& ptemplate <>
' z# ?) R+ L5 e- E3 _9 ^/ m9 _struct SelectSpecialization<void>) a o; V( [4 _. l
{
# h+ J* b4 P4 `6 a; \( R+ n/ `0 a' ? template <class Normal, class Void>
1 d4 v9 f' ^6 S6 z+ Q struct Type { typedef Void type; };
/ o( s$ @7 l$ O. m# N, H) \1 s};+ M7 U" v$ W& P; p; o! i0 o$ m8 n
4 W' t+ n) d8 Q5 x6 E* e( X
template <typename T>
( J( d1 ~2 n& W$ I3 G& }2 Xclass RunFunctionTaskBase : public QFutureInterface<T> , public QRunnable; p+ p/ H1 l4 z: V8 g/ _
{+ ~- J' v# m; C
public:
# O' f+ ^ C% X: O6 M QFuture<T> start()( O4 {% p0 m+ b; x; c, Z
{9 P8 E0 u% L! T6 d. w: m
this->setRunnable(this);: Z" p' B7 U/ D- e+ ?
this->reportStarted();
: I! U4 K/ ]" S QFuture<T> future = this->future();
+ N# Y% C; c2 S6 q) u9 T6 R QThreadPool::globalInstance()->start(this, /*m_priority*/ 0);
+ u9 p& O0 R' I1 u% R1 d7 m* ? return future;8 W9 h/ b E; L# n
}
L0 Q5 y2 X( y' c; a2 t% A/ c. p* Z6 O- D
void run() {}
8 X. U% a& y9 A0 g! u virtual void runFunctor() = 0;
, M6 K% e9 Q# c};
8 L' h+ j& g+ r8 D) l7 ?, W/ R( [
Z6 S) \4 ?# W) ytemplate <typename T> j& S2 \/ X* m! R3 W p
class RunFunctionTask : public RunFunctionTaskBase<T>0 Y! M8 f) A# s
{
( ^3 W" D! v' @: I; x/ y' Fpublic:
4 I; z9 r( \( y+ p void run(), m; |. j- R( I n0 Z( V/ V0 @
{
) m; |* E+ ^/ o2 h4 ?2 [6 ~; S7 s& ` if (this->isCanceled()) {0 b/ {' w4 @6 a! k+ o
this->reportFinished();
]1 _4 `: z! f( h; Q9 e/ I6 U return;, N) z. ~, U( g$ Y6 {
}
' Z' N9 S5 J" u this->runFunctor();3 y# |5 x; M* x `
this->reportResult(result);
2 V: }& Y& z& ` this->reportFinished();
5 N+ V2 S" P) b9 Y. v4 } }
. u: {3 e/ ?3 j3 Z9 C T result;
' Q9 c* S( w' b' o1 B' v$ b# g};
% f1 s {1 B9 V F4 S" B: i3 D! P- u2 y! ` t- t7 }
template <>
: F6 F: H2 n/ z+ ~2 X1 _class RunFunctionTask<void> : public RunFunctionTaskBase<void>7 `$ n7 I4 q5 }. a% J7 W( y* X
{5 ?2 \& o! o' W/ J4 U$ [' f' v
public:. U2 D4 \# o7 ~* P# U# p" C/ d0 o
void run()
7 N z3 ?6 N# t {
! \) s4 N8 z6 r- Q" q if (this->isCanceled()) {: L- s1 z' \/ P5 G" x, f
this->reportFinished();1 @$ \( N9 I4 {! l: A( ~4 R6 V, O
return;
6 M* c- f5 E h( E* V }
2 Z, k/ z5 @5 R# q% }" K this->runFunctor();$ m' r x/ ^8 W/ h3 i8 H
this->reportFinished();
* f6 q, X& ^$ G6 k& l3 Q }8 n% A/ y1 o, C4 [' J# r8 q! _; l
}; _- T( U, L0 ~6 T- I
' h+ v* n9 d! z; D5 ^7 G} //namespace QtConcurrent
, _4 O% f- c0 Y L' U' d
" O2 W8 d- {& }* I6 p#endif //qdoc
2 B! @2 b( P6 ]) C- G5 K; K+ [
2 I% |& g* {8 F& }0 G: KQT_END_NAMESPACE
- `) |3 O. X) n6 i1 \" FQT_END_HEADER
" p/ C* S& E3 G9 B* p
2 \- J" V4 [2 b8 h& Q#endif // QT_NO_CONCURRENT
/ T+ V! U2 j3 g' N0 K
" ^ @$ C/ v8 }5 z1 G8 B9 F" J#endif
6 z# }) {8 b# u
) b3 a n9 p+ j2 J) z" s2 @- g |
|