|
|
我对syslink进行交叉编译到arm,但是出现如下错误:! [& P) b# X7 a5 t$ X0 p/ T3 f7 b8 _
/home/tl/Projects/Xdl-build-arm/../../qt/Qt4.7/include/QtCore/qtconcurrentrunbase.h:65: error: two or more data types in declaration of 'parameter'
' }" b# @6 A6 ^
3 y5 [( W, J' x1 ]& D这个头文件内容如下:
6 x* |0 X4 n) [7 Q& N#ifndef QTCONCURRENT_RUNBASE_H
3 m+ B4 U! q9 D8 ], }$ P#define QTCONCURRENT_RUNBASE_H
6 o$ r/ `5 T& G6 q9 o- {0 H* K; J) f& z
#include <QtCore/qglobal.h>+ _6 v# p/ q$ v6 `7 l. S
/ F1 d g1 g# l7 q& R#ifndef QT_NO_CONCURRENT! J, i: c, r; I( o2 r" Q
, [" V" b& k$ ^3 d#include <QtCore/qfuture.h>* i _& Q5 T" @3 i* A. i
#include <QtCore/qrunnable.h>/ o$ Z# d4 J0 `/ {8 B$ y; ]
#include <QtCore/qthreadpool.h>
* g) v# }% x7 C( Z1 k0 \: C
* p* ?/ E5 b, dQT_BEGIN_HEADER
# N+ w( L; D$ t% w$ OQT_BEGIN_NAMESPACE2 g ^( U7 t3 p) u% [% d1 ?, o, _: W
C* U% ^- O1 E: p! Z
QT_MODULE(Core)
$ h- y. f, ~; W9 X8 ~
# Q6 l) F k. M0 P/ y#ifndef qdoc
6 f y' d1 S* C3 z' o& u) y1 ^ e& l7 F$ m* t# `
namespace QtConcurrent {
: ^/ `0 Q2 v3 l9 r
1 t1 C- N6 D, a& i" w' I0 Z) utemplate <typename T> `9 y, @2 S, O4 J# U7 |6 I: }' J
struct SelectSpecialization) _4 `7 h1 z6 A. f5 a& a! N2 W2 _
{
0 I, W+ F4 Q1 q5 \9 i! m template <class Normal, class Void>& u5 H! p g8 y( Z/ G! G
struct Type { typedef Normal type; };
$ v4 p5 M4 N, z# y/ ]};
3 e6 j4 c& Z+ u8 p! `
/ [- k( I- e" \1 l" v, U* stemplate <># u% F# c) W D* `. L* \6 B
struct SelectSpecialization<void>
. @* O+ y: o+ m; D0 s8 g; u{
9 `9 W, i( W& K- a template <class Normal, class Void>& q5 o" c6 `4 Z) s/ x
struct Type { typedef Void type; };
' Y: K5 F* ]4 d$ @8 P};5 O6 m" l9 r/ A& g$ Y
: W- B8 k" B4 ^$ u
template <typename T>9 c Q3 a e* o r1 d( q0 Z
class RunFunctionTaskBase : public QFutureInterface<T> , public QRunnable4 c' p3 T. }, A! ?: K( L
{; M) v) K0 K, H5 ^2 [5 G
public:
7 I! g! H3 w; k9 [. e* m QFuture<T> start()
2 f( ^) m! A5 t+ Y2 ^2 z {* ]4 [! [! ~6 i" c9 a+ E& [2 f
this->setRunnable(this);& r& v, K# n9 ^) ~0 o5 `! Q
this->reportStarted();
) m, ?) K; X6 h$ a, V2 I, j: { QFuture<T> future = this->future();
# a& T5 Y8 _" l+ Y) |! y; i; P QThreadPool::globalInstance()->start(this, /*m_priority*/ 0);
' m, w* _) R% }' b: W return future;
6 h& z" e0 t' k( M" \, g }9 D9 |- x" [: P9 \! g- N! {
( g$ y+ s y3 b) t" F+ x! F. r) { void run() {}
! g% i! @( ~5 i4 i7 C6 h3 D; R# N5 D virtual void runFunctor() = 0;3 t( R1 W# ]8 Y" a& J
};
H# T% d7 n* g+ o/ f% x, d& [
3 ~' }( h% r' O* B0 itemplate <typename T>6 K! ` R+ ]( c# h2 v$ v
class RunFunctionTask : public RunFunctionTaskBase<T>, x9 U% R9 I2 Z7 @
{
* o/ _- j) n- Z0 c: G3 Vpublic:
- P. b! t9 \# R5 [ void run()% A' m: f; C6 b1 t1 L5 u. ? D7 M& g
{. ?& p; @. f3 X( b( J9 b2 d! t O
if (this->isCanceled()) {! T* Z/ ?+ o9 a8 Z# I
this->reportFinished();
m; L1 ~* f$ l8 C* }& w return;
7 {6 P' t& H" c! ~! z }
) T+ k: G. ^) x1 \ this->runFunctor();
( ~3 L# f0 X2 y0 R this->reportResult(result);
% r7 I+ P y% O this->reportFinished();
- X/ W i" U, ?5 R! L }+ g! j2 @# q. P2 i/ w
T result;! u, G4 T$ c9 x, \2 Q% A
};
4 n3 d1 C3 t% N7 D% U5 h
% C( l# Q9 j7 l' z7 B) ?template <>0 f# H7 k/ i, h$ S
class RunFunctionTask<void> : public RunFunctionTaskBase<void>
* k3 F# J3 @4 I+ d{) X# p, l, ]$ V b4 \6 |
public:
& p2 O3 {8 O# a i3 n; t) w& Y void run()
2 q! t: c# D t% W' P6 i {! B2 [( Y6 Y7 d. S
if (this->isCanceled()) {
9 C; X! M! [ J' k this->reportFinished();
5 u% _* x& \- v3 M8 s2 ] return;
/ R0 C+ f# j8 z, [4 c2 O: e& O }9 ?9 B6 P( U1 |# j+ Y$ J2 x
this->runFunctor();5 |. H, b% c, D6 u) B
this->reportFinished();
1 l# m7 O' {; [, v' l8 A3 n# y! | }& v$ T& X: V9 ^% ?1 m6 P. N
};) \" W i$ T. M' C
+ Z5 `" b4 d% v
} //namespace QtConcurrent& u) P. ~/ ~, I% D7 j
" L9 x4 g- R2 @1 v% D A, N/ Y' v/ r
#endif //qdoc
# E) r, t6 @6 A9 c o% @/ n5 s* U* V2 G& K9 t; N& B
QT_END_NAMESPACE
! Z. N ^3 T, [ g( sQT_END_HEADER4 d( e7 H( d4 l
# P9 `' T. X y! b ]#endif // QT_NO_CONCURRENT
9 \) u$ z: t$ S+ A m* h
, p! w' v* c5 l#endif* }( p7 i3 Z) A! H5 }; _
+ D% ]! Y# h2 W2 E' a2 K |
|