|
|
我对syslink进行交叉编译到arm,但是出现如下错误:. @7 @) G3 s& M1 v' [9 ?: @
/home/tl/Projects/Xdl-build-arm/../../qt/Qt4.7/include/QtCore/qtconcurrentrunbase.h:65: error: two or more data types in declaration of 'parameter'
# s* r1 b, O1 P; G$ M! ]5 w4 H) Z" d
这个头文件内容如下:6 _3 u- I0 q' C/ k; _( T
#ifndef QTCONCURRENT_RUNBASE_H
. _# s$ J( Z1 Q/ v0 v; S3 V#define QTCONCURRENT_RUNBASE_H
- s: O/ j/ Q, K9 B) D$ z+ ^ C4 O
#include <QtCore/qglobal.h>9 H+ E1 @) r+ f7 O' t) q% I
, Q" J7 O7 E% q
#ifndef QT_NO_CONCURRENT) _8 {" ~' r! j( {
" p s1 N! r/ S9 ?#include <QtCore/qfuture.h>
( T2 L" k# v# ?& ?. F. V; q#include <QtCore/qrunnable.h>) X+ @$ \# R6 @4 x: e; k
#include <QtCore/qthreadpool.h>
! w! G" S& p5 t+ {0 t2 ]9 E: Y3 {6 ]4 g2 o' V0 G; A% j
QT_BEGIN_HEADER
1 ^% s& w" @' E2 o5 `2 f1 S0 AQT_BEGIN_NAMESPACE) N6 g& w3 ]! ^3 N( L
; R3 E6 _ X8 r/ b' ZQT_MODULE(Core)9 Z% P2 o& n* B. I5 ?+ w$ e0 q9 Y# s
7 \& m! W! [* U+ O$ H#ifndef qdoc: u+ H3 V3 d9 \6 v/ B( @, d, \
. N, j3 v2 C$ f* M, P `namespace QtConcurrent {2 A0 `( l, R q5 P; [1 H% w
: `3 i' K. B3 m/ R% k% o2 Q$ e
template <typename T>& G9 {3 y7 m. d0 x! y) p3 B
struct SelectSpecialization
% s6 {, g7 v' w( _{
" H9 Y/ j6 H' H4 r; f! B* P$ D) s template <class Normal, class Void>8 @% v' Q! b9 w0 E* y3 e
struct Type { typedef Normal type; };" `7 e5 p, ?2 C4 |$ ^) E
};
d+ {4 Z2 E$ d3 i7 g) |
# J0 d. D% [* V, n! |template <>
. Z g$ p5 v* R4 @struct SelectSpecialization<void>6 M; L3 v* R) n2 u
{% ~; b& q0 T! b4 y4 J% ]
template <class Normal, class Void>' s0 l0 S& v" E8 o
struct Type { typedef Void type; };
" x3 \, f) H( Z ^% U; z5 X};
& f' Q$ o$ W/ N/ h
& R- g: l. x& [+ }5 T) Jtemplate <typename T>5 J3 }3 n7 }/ p* V) u
class RunFunctionTaskBase : public QFutureInterface<T> , public QRunnable) A+ x) h$ R) u/ a$ F
{/ m6 w$ a* h2 ~3 h. W; L
public:
" X! J; O/ D1 O! _( e! [) Z) |0 r QFuture<T> start()
& e) i. w+ s) h+ z0 W {. w6 `( v! @. E; B$ z
this->setRunnable(this);
8 _: t- M; q$ S& | this->reportStarted();
" r9 D; @, D% B QFuture<T> future = this->future();
7 O. P6 ~' U4 \* ~% q. b! m QThreadPool::globalInstance()->start(this, /*m_priority*/ 0);. K) W3 n) x* }3 `0 n* U9 D" t
return future;
$ c& x# \3 ]! o: F7 x$ r }
& j# r R- ~ {. B7 W. k7 `- A& G! E( p) c% O
void run() {}7 d4 f# C! F4 ^: E0 @+ b
virtual void runFunctor() = 0;6 w* [1 L1 N# f; Y' R, B2 D
};
1 a, j7 A Y, {2 n* b8 a* d8 v0 r. A3 R2 ]* I2 _. |( s( s# F% A
template <typename T>
% v: A* [; e# Y, P3 h: `- Eclass RunFunctionTask : public RunFunctionTaskBase<T>& g! n0 _% Y( _+ x
{3 J9 Q6 ^! i8 {' o) S: O7 f
public:# y, F8 }4 [7 U4 n; w: M
void run()
; _ N1 n. E+ h+ x" A" x$ w4 v {
N' R* y& i) J$ E; ] if (this->isCanceled()) {
( E" K7 } b& k- Z6 l! C! D3 T this->reportFinished();
y; r- T3 E% ^ c- ^ return;4 _1 j7 d% I8 ~1 w% u. c M
}
" a& I C* Y& O$ e this->runFunctor();
1 z% `( W9 e; a" e0 `$ j this->reportResult(result);
4 R. D$ N+ d8 A7 a' ~/ u this->reportFinished();. K2 j" L4 b0 _' K# J, E+ e
}! J) g. ^* p+ N# X+ p
T result;3 W& Z( T* j3 w! X" N
};
5 B) M* r8 ~# [9 m2 X
: y$ B# K% u( H% e z7 y6 V# x5 Jtemplate <>9 A3 @+ S- q5 E# ~
class RunFunctionTask<void> : public RunFunctionTaskBase<void>
0 |: g! r* o! l9 j/ c& P! \" t% i{
$ P* B; c1 g: Jpublic:
% k- B) e+ W' L; \/ d% l void run()5 P) s6 z2 f0 ?& x4 B8 |- @4 Y
{
, O3 p) E+ G o& [" c9 Z9 P% L if (this->isCanceled()) {
9 S2 S g3 Y! i- Z5 l this->reportFinished();3 K1 b2 T7 e/ I& O+ P+ s
return;
# T9 \1 E) l5 L+ s) N- W+ l }
5 |) v" I. o* R0 W: p5 F' f1 Q3 P3 X this->runFunctor();
5 d' [4 \( p# s this->reportFinished();5 a& e3 O0 S) \8 z, {1 z$ p/ _
}
! C1 X7 O; e6 ~; P' W! D};
8 m# U9 E1 `1 m7 k/ h& G/ y
' D4 T; V+ A$ S) p, @/ Y% y+ U, J7 E} //namespace QtConcurrent
+ L& O% L2 Z3 d' n
. c: h; t7 ]7 y* }5 \#endif //qdoc/ }4 I9 b; v+ k& U
& {# \1 J: n; C# ZQT_END_NAMESPACE
5 a6 w, U2 X# n4 o$ X' _QT_END_HEADER
3 F$ M5 l" M% T# l2 i0 L8 R9 e1 _ L" `, t( j! X
#endif // QT_NO_CONCURRENT8 R/ `( z2 k- B$ [3 `9 c5 P
! `2 h7 t) C$ M' Y8 s6 r# v/ ^#endif4 v6 v+ ?8 O) G
$ {* Y: y5 C: V- b9 ^ |
|