|
|
我对syslink进行交叉编译到arm,但是出现如下错误:' a' K5 W e4 u: f Y' x
/home/tl/Projects/Xdl-build-arm/../../qt/Qt4.7/include/QtCore/qtconcurrentrunbase.h:65: error: two or more data types in declaration of 'parameter'
+ w$ C1 `- F1 g* q1 q& C' _( B% j+ ] b' k( i/ O
这个头文件内容如下:
8 Z1 M& g4 ^3 O- }' p1 Y#ifndef QTCONCURRENT_RUNBASE_H! n! n) ^$ N' F
#define QTCONCURRENT_RUNBASE_H
& n! Z" U7 X1 H+ S9 m( q. U
" [( Y% q, h/ {8 ]4 A" q5 U$ v. o#include <QtCore/qglobal.h>
6 Z& U5 d" q: R' M& A6 `/ o
5 X- z7 Q* a2 {#ifndef QT_NO_CONCURRENT0 \ z3 E' M4 [4 [4 v
3 Y. {" E a2 n' n1 v#include <QtCore/qfuture.h>$ ]7 k, C* @: S! M
#include <QtCore/qrunnable.h>
5 B# S R- a5 A7 |& {$ I#include <QtCore/qthreadpool.h>
4 \: ^( H6 a8 l& s7 Y! @, |
: u1 U: s1 H7 F7 b6 fQT_BEGIN_HEADER
) b6 R% j7 p& a U4 V( L; fQT_BEGIN_NAMESPACE
- D3 l) R# F5 A* { G; ]: G: h- b7 ~+ {( Y
QT_MODULE(Core)1 Z8 y5 j7 C2 y7 L0 J0 ?: |
( L4 R9 i: m0 f& l. G
#ifndef qdoc
" W; U3 ~, @6 b( l) ~ ^4 K# {2 j1 m( L+ _
namespace QtConcurrent {
$ c, P! i5 ?1 Q0 l0 B: u; o& c2 l7 e# P( `- `
template <typename T>
0 R4 L$ X1 J: g' }, O' ]struct SelectSpecialization
( m; R) b- n t& @* S{; U% w. G q0 F. q
template <class Normal, class Void>, L m: i% g4 o* w1 _9 Q$ _; B
struct Type { typedef Normal type; };+ N0 G$ l9 j" R- V7 n
};
|3 B4 f/ _9 P- @/ R* x& s0 a2 w
& U# i3 l; q: l' `1 X v; {- h4 D- etemplate <>- t' {/ x! X) W6 n! k
struct SelectSpecialization<void>
6 B: z8 S& x0 I0 x& r& P{
( i9 |# W; T9 t# J- l* ` template <class Normal, class Void>: `' s0 \8 `7 H
struct Type { typedef Void type; };
% r0 ~- R1 A2 [" m! n( v};$ {/ w, M u" W% Y: ~$ |
" t3 W9 b1 u t- Y# g u; S+ Ltemplate <typename T>4 \9 X: z, a2 r' G
class RunFunctionTaskBase : public QFutureInterface<T> , public QRunnable
, A; D R, ^0 J+ _- P% A# S& o" o4 d{
~. b3 Z% G( Z* m5 @- |5 E* Z, qpublic:
$ H0 R6 @5 K N/ I F QFuture<T> start(). I w7 @5 ~" C$ M) T/ F
{. t$ Q% | a( R% _3 {4 x
this->setRunnable(this);! F5 a# _4 M, _7 q( y: f
this->reportStarted();
' Z" `, q* f# n) W6 B) V/ G QFuture<T> future = this->future();, c7 J- x* U/ j9 E
QThreadPool::globalInstance()->start(this, /*m_priority*/ 0);# f/ p' l$ }8 p
return future;/ H6 K& x3 w" T: B, r N
}
h; p5 c6 k7 w. L0 N: |3 m' M
6 G0 X4 p3 X4 q; X1 @+ w! [ void run() {}
1 x! [# q% N% h5 Q2 x virtual void runFunctor() = 0;4 z8 a9 k B& N4 s
};
9 G# R, g+ C- S4 Q" u- S7 u" W4 z+ q" Q' P1 Z e
template <typename T>! i0 W6 N0 k. w5 Q" B7 a4 F
class RunFunctionTask : public RunFunctionTaskBase<T>
9 R+ b5 H0 s1 z+ I* L# O{
& h: v4 x) l! W% x+ l, epublic:
4 c/ \) W9 I# Z' c! g" I5 s void run()! N" A+ u4 ] A/ L) o; w$ D- |
{
6 [* F0 n5 N; s- L- n if (this->isCanceled()) {* [+ K+ _, A+ O- d* W/ \; s; D
this->reportFinished();1 {4 p0 I( [+ a& g
return;
* K3 `/ o: N3 E }5 Y# K2 G1 }* Q. R& ^! p
this->runFunctor();2 k' u+ B) b( B( x
this->reportResult(result);
0 Z5 p# }% ^1 w* s1 W this->reportFinished();/ F) b Y7 h4 _' x/ d
}# X1 h# l- B ~& p/ J7 ^
T result;
+ K( M: U8 ?) i G$ M};
7 Y! N q& K( X2 T
( g+ c9 A$ m& C( }template <>
' i; a) l7 _5 ~; L, [: nclass RunFunctionTask<void> : public RunFunctionTaskBase<void>7 r( b# V& i: R% `$ i) s; F; g0 c
{
: H4 [4 }9 l# G4 F i6 @0 ?+ Z: Opublic:
1 j r3 M8 O- W$ g: C" y) f& y void run()
( ?) j- h$ o: \7 Y, p {
1 e# O: \7 `6 r$ s if (this->isCanceled()) {
' ~2 g; F9 {3 I* Z. p1 F+ g this->reportFinished();
7 V$ T* }1 x8 E; N- f2 {, h% P return;( f7 y% {& x# |, ]: X( @
}
* Q8 D3 J2 i, D( K* V this->runFunctor();- r, a. E' j: Q9 ~' h7 q
this->reportFinished();% ]( v1 C: V, q3 j" H$ p
}
( h/ V9 T4 M/ m8 b& J& b5 ^};$ f' u( u( Q, R$ u- Z) M+ z3 E$ Y7 y
) j6 c; V- u" n2 y$ M( J
} //namespace QtConcurrent9 z8 ^. M% h: Z
0 n2 c' H7 \4 |1 e* i$ J#endif //qdoc
& d+ I) f, X. E! F& k
9 U+ E8 J/ @0 B& ^QT_END_NAMESPACE0 q d2 F9 c( ?1 I
QT_END_HEADER
) v3 C5 o- Q" l+ R8 U) ], B, N( v& c) ^6 \
#endif // QT_NO_CONCURRENT. p/ K. o% A/ _5 E! D) k
9 t' R) _ _8 v/ }4 e# z#endif
3 y% L4 |# W2 v* X \9 z- \0 N/ W
9 Q3 T* T+ I X! x3 r' Q' k |
|