|
|
我对syslink进行交叉编译到arm,但是出现如下错误:4 \( z$ S5 v0 @& k6 m" R
/home/tl/Projects/Xdl-build-arm/../../qt/Qt4.7/include/QtCore/qtconcurrentrunbase.h:65: error: two or more data types in declaration of 'parameter') `& `2 `/ p7 `1 p) [
1 i1 ]/ c/ m, |& Z1 a' K这个头文件内容如下:- b( D, {4 l6 e4 W3 M2 Z$ u) s' |
#ifndef QTCONCURRENT_RUNBASE_H
' h$ Q, _/ q4 u4 L#define QTCONCURRENT_RUNBASE_H3 _8 V" r# h5 c
* Y# z7 o6 Z' X/ E4 R' y# R* B#include <QtCore/qglobal.h>) H4 n9 V) B. ^2 \$ u3 \6 ~
2 @2 u& ?$ f$ D) D
#ifndef QT_NO_CONCURRENT
Z q2 s7 {3 z4 J
( q4 Q& R: U( e4 i#include <QtCore/qfuture.h>
i( _/ {- u( D4 t- k8 w8 I. o7 L#include <QtCore/qrunnable.h>- n: c( g& ^: d' B
#include <QtCore/qthreadpool.h>
8 |2 i0 T$ A v
# W' C; b/ u" o/ P4 NQT_BEGIN_HEADER% W$ h& z, l1 `0 B7 I/ N
QT_BEGIN_NAMESPACE
# H6 s$ D& C4 i9 F k! p
L- G* m4 ]9 V0 h5 A# XQT_MODULE(Core)
0 d! N/ b1 p9 d
6 t9 t- s5 X' U0 T" i7 x#ifndef qdoc
4 ]) y. [+ c6 ]
u. G5 h R' m& tnamespace QtConcurrent {0 S2 o5 s# Q) D/ L
: Q: ?' `6 i s! }9 N: H
template <typename T>
# D3 Z$ `% W+ f0 sstruct SelectSpecialization
, T# W$ [4 H7 l! l4 m7 L{" g p. l1 h9 `! X
template <class Normal, class Void>5 ~2 s1 C( s g; N
struct Type { typedef Normal type; };/ @; d2 R( `& V( U, ]
};
: ^1 t4 z: P' }2 e
2 z* z1 N. W2 K( z7 A/ Itemplate <>: n5 u$ [2 o; Z4 ]
struct SelectSpecialization<void>
) B8 q# I# L$ O8 E+ O{
$ a4 I5 M/ m4 J$ W- j template <class Normal, class Void>( P0 [; }/ N9 X
struct Type { typedef Void type; };* |" [) R( E" T' t2 k" U% l& W
};4 R/ n e& H1 Z8 m4 c
+ u6 O6 k2 m* f! ttemplate <typename T>
) R( \9 n4 c9 `2 oclass RunFunctionTaskBase : public QFutureInterface<T> , public QRunnable
5 m3 N* \' [) ~- i/ j* y; a{/ v% x2 ^ g z& S1 d, D6 R
public:6 s1 X9 v: m& K4 w
QFuture<T> start()% \* y+ |, j8 X" M1 t8 @
{
9 `5 u7 T+ H1 n4 |7 U, t this->setRunnable(this);3 U0 s1 w. D6 f
this->reportStarted();& o: l& k; K! _; F/ c1 t4 C6 \
QFuture<T> future = this->future();
$ T$ s! u2 c, ~7 L) H9 N$ _3 q5 } QThreadPool::globalInstance()->start(this, /*m_priority*/ 0);2 Z9 K6 F5 e: D% \" o! K
return future;
* } y9 P* C! g& b, _+ V }
) W6 Z4 g) G+ ?( m2 x& h$ t$ U
4 ^8 r% [; }+ n4 u& `" A0 C) U void run() {}
, U& _- T7 R& T( F5 B virtual void runFunctor() = 0;
4 S# K1 Y% M d4 p9 e K};
# b0 b5 C; ~4 l; e; l; D% `
: W# O' H. {1 Rtemplate <typename T>& Q$ H8 r$ `6 F' W0 ^
class RunFunctionTask : public RunFunctionTaskBase<T>
' B6 I5 a3 ^5 U2 p7 O9 V4 i5 a{6 f' T5 E( B9 B7 R
public:7 d8 f/ D9 _6 w9 S
void run()
' U( m; T! C" u! P/ } {0 t7 f2 `# h3 L. }& W) ~4 }& H& |" {( v
if (this->isCanceled()) {0 b1 c9 j) k( Y% u I( r/ |/ s9 q8 y
this->reportFinished();
+ O) k5 M4 V9 }3 x" N1 H return;
0 Z9 j3 x1 `9 ~; n4 \, v }
. g; B1 [1 a7 X% Q this->runFunctor();3 J3 T6 i; p, s/ l
this->reportResult(result);$ z! b# A! N, E6 A- s( L# D
this->reportFinished();
0 d- h/ m- C, O- i+ p6 l }0 _" h; J; X+ h5 h& d
T result;& l. Z7 t: d: Y4 o% C6 E- _
};
, S- M- L- p& E: |8 U' ~( s0 d, Y9 d; X! A; s0 i5 r% q
template <>9 w- e% x3 a4 ?, ~5 x& k
class RunFunctionTask<void> : public RunFunctionTaskBase<void>
0 L. @ }2 X8 D! H' `{
6 m8 W* E. f) b6 bpublic:2 g3 ^7 k) J; W8 ?
void run()- _# m7 B* q1 g l$ V5 ^" Z4 E( |5 @
{. r2 R& @6 t9 Q; |2 f+ \
if (this->isCanceled()) {, E# l+ D# ^2 c2 {
this->reportFinished();
" p+ ^! E$ g) k3 l6 M: ^ return;
: z$ a3 R( Y2 @, h' V0 j }
' e6 r# S) y6 ` this->runFunctor();9 K) N- O% n8 X4 | w& Q0 m
this->reportFinished();
3 G% |+ ]2 m1 v0 ]+ K }, h9 q0 _$ F, H" j
};7 ~1 G* H g$ t! L
) Z! ^" K: [. A9 q- X' ?
} //namespace QtConcurrent
7 E( a1 c9 M. A- o# t% f* ~. a. Y. ?! v: V$ ^% h5 r
#endif //qdoc/ C. \! V: k5 i' X; t& p5 p
5 Y; X/ {1 H" B% |5 O& X- iQT_END_NAMESPACE+ w+ C! m X' \, } s4 x) a0 ]
QT_END_HEADER- f8 Y. X; g6 {9 T( k3 y x4 x
4 r, C$ a8 S" `% k- f- r4 e#endif // QT_NO_CONCURRENT" F' H: N' E, {) _1 Q' }
# b+ v1 ^6 Q! {7 z: E* ~- m#endif) z4 y& ^6 g: u: B
; |* C, ^7 ~( i
|
|