|
|
我对syslink进行交叉编译到arm,但是出现如下错误:# X: R0 a2 ~7 z# |0 @8 q# D l
/home/tl/Projects/Xdl-build-arm/../../qt/Qt4.7/include/QtCore/qtconcurrentrunbase.h:65: error: two or more data types in declaration of 'parameter'
# { J" {- s, ~2 Q; @8 C9 ~1 i- H
5 _- L1 f$ p4 ~这个头文件内容如下:
$ e' Z, Y/ q p+ h#ifndef QTCONCURRENT_RUNBASE_H
, y0 x/ U) g+ k# p9 i. L& Y#define QTCONCURRENT_RUNBASE_H+ R5 H% y5 M$ r4 A
% s! T+ R- j% V
#include <QtCore/qglobal.h>2 Y$ m0 d) D) r9 h4 D$ t1 w8 [9 ^; Y1 X
, P& S2 V5 C6 p#ifndef QT_NO_CONCURRENT
* Q @0 H8 X% f6 A4 T7 c1 l/ b% l, B. k7 T8 [0 c2 D
#include <QtCore/qfuture.h>4 {! l+ X9 v. ~# h2 e+ T4 N: W
#include <QtCore/qrunnable.h> t6 a t) `) ]5 ~
#include <QtCore/qthreadpool.h>
. a* K) L9 H+ E
) E9 D! }1 y: S+ h) O! s: ]QT_BEGIN_HEADER
0 z6 g: o; y" M8 m3 m2 fQT_BEGIN_NAMESPACE* a7 N- o: o* t- {) N0 x* _+ G
( c$ H$ ^; v, w( u, L: V; w- ]( m$ j
QT_MODULE(Core)+ _; R: Z W7 P$ g
7 u5 B# S. H% ]# \
#ifndef qdoc+ w0 w# s- R! [0 ?1 c
: f& t$ @" c, A! @6 R& y/ |2 Y3 Z% O1 y
namespace QtConcurrent {
1 r2 N; z4 g" }: r4 M) d7 \7 w
3 V8 I" a& b, m2 `7 {+ |template <typename T>
6 I6 n: B H; j3 Rstruct SelectSpecialization; }. ~; J V/ ^* E! Q3 M
{
2 m# ^8 |0 M$ I6 v" B template <class Normal, class Void>. ^' H* Q' j7 W# F$ p. u ~/ t
struct Type { typedef Normal type; };
: O6 M( ^( Z" G$ k; S! t3 G# S};5 x2 d, D1 ~6 J( M3 `" ^1 J
5 E; n; t# x' N, r9 E" D rtemplate <>$ l G0 N+ N/ o. M( o
struct SelectSpecialization<void>% E! R; w" Z. H. a
{/ k3 w4 e9 p* u8 z
template <class Normal, class Void>8 i$ x. a/ W2 j) e
struct Type { typedef Void type; };7 V3 c9 F6 j a3 O4 g0 ~
};6 J6 I- r& b0 n$ ]
* a$ E7 H, V3 m1 O( t. ~
template <typename T>( Q& e# |, U7 n5 [7 e& C! F
class RunFunctionTaskBase : public QFutureInterface<T> , public QRunnable
' b0 h: |+ N8 B- D{
7 Y0 W8 J# ~, q \5 y. ~( Rpublic:
9 Y/ S1 M( g3 B QFuture<T> start()
, l! o# J% o. [: M/ U4 J {
A$ b9 W4 A0 Y" F" _( V this->setRunnable(this);
7 j% L. |" F8 A1 `. H1 v this->reportStarted();( U' W1 m7 e% |" ?
QFuture<T> future = this->future();
! R- |6 J) S% c* {9 g. `, c QThreadPool::globalInstance()->start(this, /*m_priority*/ 0);) Q1 }+ o+ r6 {
return future;2 p2 | N# r+ k7 W2 m2 P7 D2 Q6 b- A
}
+ Y+ C) c/ u# v2 B% i+ V6 {# |/ b3 G, `6 d
void run() {}
7 _8 S; ^, r7 w# Z7 a; o& j+ f' A- x0 Z/ P virtual void runFunctor() = 0;9 x9 f1 Y+ w0 D" }4 S
};1 G" `% L& x* `6 n( m9 B" T
& [5 W G8 U% Z6 N6 P* A" P$ j
template <typename T>3 F# o' h+ A0 D& A* k: O, o
class RunFunctionTask : public RunFunctionTaskBase<T>, q$ f6 X/ w4 s) m, `$ r. J* L( }$ A7 o
{. @6 T1 |; Y2 t. l6 m/ ?7 M
public:' k0 ~. d9 v. O" X2 N
void run(); L0 u9 ~# k% f0 f! O
{1 T# B- P! d, @4 L; z
if (this->isCanceled()) {" ], Q; t. O# \
this->reportFinished();
* e+ f. R- b' [0 F$ U' s return;
5 p! }1 n* i; b5 A3 W/ ~ }, P3 P7 d) d6 ~+ n
this->runFunctor();
- R5 q" V- j) n/ }! L0 B0 y this->reportResult(result);
# g, @* V4 U2 N9 ]0 h this->reportFinished();1 T% H8 I% F3 ~6 T
}
3 t( K9 ~3 U% H7 g- t: V& C T result;) r0 u0 r. l/ X( u3 Q) q
};0 e( t/ v/ M" {$ R% J
/ J% G- f) W2 P @/ z, ]0 I
template <>5 r. B# k# ]! O
class RunFunctionTask<void> : public RunFunctionTaskBase<void>' I/ k; j. Q# }. W% @8 V
{- ], S7 t+ @. H' I) g/ k5 J! D
public:+ F, ]3 t. w M1 M
void run()
% Y$ y1 m- o( e0 q {
, M% N" _ R; s1 o0 [" T3 e* f if (this->isCanceled()) {6 I$ M: l6 y9 P9 j
this->reportFinished();" a# T1 P8 H8 [' ?, k0 T( S, l
return;6 i) B, _) {5 Z; i
}/ P: p! W/ q2 Q2 {4 F* q) ]( r
this->runFunctor();
. o# P, @4 S% q, d+ W* L this->reportFinished();
+ a( B) P1 m5 m }0 O$ r. e! L8 x9 l
};
# F) Q- u) ` }( R1 R; O7 |& h' b8 W. m: }# [* r
} //namespace QtConcurrent/ f8 H0 o+ C. Q/ j
8 N1 t. k7 U1 W" x#endif //qdoc
+ e6 E- q$ Z& \2 I/ ^+ T: l0 c+ }( |
QT_END_NAMESPACE3 ?, X0 E9 C/ E9 H3 y: }( k1 n
QT_END_HEADER
) o c# W0 r$ }* @5 d0 w
5 U& D" j! K$ |* F+ o#endif // QT_NO_CONCURRENT3 B* t# y* `6 r, H
" y( `% ~: k0 l) @4 ?; Q: w4 X' T
#endif
! z) D* E9 U6 ~% \7 \# l+ m: ~$ f! W5 @& D+ _
|
|