青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

MFC與namespace的沖突問題

把代碼從QT移植到MFC的時候,這個文件vecmat.h,出現了如下錯誤:
error C2143: syntax error : missing ',' before ')'
error C2143: syntax error : missing ';' before '}'
error C2059: syntax error : ')'
fatal error C1004: unexpected end-of-file found
等等。
vecmat.h源代碼如下:

#ifndef  VECMAT_H
# define VECMAT_H

# include <cmath>
# include <vector>
# include <iostream>

 

namespace vecmat {

 namespace internal {

  template <bool B>
  struct is_false {};

  template <>
  struct is_false<false> {
   static inline void ensure() {}
  };

 } // end of namespace internal

 //
 //  Vector class
 //    - T: value type
 //    - N: dimension
 //
 /////////////////////////////////////////////////////////////////////////////

 template <class T, unsigned N>
 class Vector
 {
 public:

  typedef T value_type;

  // constructors

  inline Vector() {
   for (unsigned i = 0; i < N; i++)
    _coord[i] = 0;
  }

  ~Vector() {
   internal::is_false<(N == 0)>::ensure();
  }

  template <class U>
  explicit inline Vector(const U tab[N]) {
   for (unsigned i = 0; i < N; i++)
    _coord[i] = (T)tab[i];
  }

  template <class U>
  explicit inline Vector(const std::vector<U>& tab) {
   for (unsigned i = 0; i < N; i++)
    _coord[i] = (T)tab[i];
  }

  template <class U>
  explicit inline Vector(const Vector<U, N>& v) {
   for (unsigned i = 0; i < N; i++)
    _coord[i] = (T)v[i];
  }

  // accessors

  inline value_type  operator[](const unsigned i) const {
   return _coord[i];
  }

  inline value_type& operator[](const unsigned i) {
   return _coord[i];
  }

  static inline unsigned dim() {
   return N;
  }

  // various useful methods

  inline value_type norm() const {
   return (T)sqrt(squareNorm());
  }

  inline value_type squareNorm() const {
   return (*this) * (*this);
  }

  inline Vector<T, N>& normalize() {
   value_type n = norm();
   for (unsigned i = 0; i < N; i++)
    _coord[i] /= n;
   return *this;
  }

  inline Vector<T, N>& normalizeSafe() {
   value_type n = norm();
   if (n)
    for (unsigned i=0; i < N; i++)
     _coord[i] /= n;
   return *this;
  }

  inline Vector<T, N>& min(const Vector<T, N>& v) {
   for (unsigned i=0; i < N; i++)
    if (_coord[i]  > v._coord[i])
     _coord[i] = v._coord[i];
   return *this;
  }

  inline Vector<T, N>& max(const Vector<T, N>& v) {
   for (unsigned i=0; i < N; i++)
    if (_coord[i]  < v._coord[i])
     _coord[i] = v._coord[i];
   return *this;
  }

  inline const value_type* address() const {
   return _coord;
  }

  // classical operators

  template <class U>
  inline Vector<T, N>& operator=(const Vector<U, N>& v) {
   if (this != &v)
    for (unsigned i = 0; i < N; i++)
     _coord[i] = (T)v[i];
   return *this;
  }

  template <class U>
  inline Vector<T, N>& operator+=(const Vector<U, N>& v) {
   for (unsigned i = 0 ; i < N; i++)
    _coord[i] += (T)v[i];
   return *this;
  }

  template <class U>
  inline Vector<T, N>& operator-=(const Vector<U, N>& v) {
   for (unsigned i = 0 ; i < N; i++)
    _coord[i] -= (T)v[i];
   return *this;
  }

  template <class U>
  inline Vector<T, N>& operator*=(const U r) {
   for (unsigned i = 0 ; i < N; i++)
    _coord[i] *= r;
   return *this;
  }

  template <class U>
  inline Vector<T, N>& operator/=(const U r) {
   if (r)
    for (unsigned i = 0 ; i < N; i++)
     _coord[i] /= r;
   return *this;
  }


  inline bool operator==(const Vector<T, N>& v) const {
   for(unsigned i = 0; i < N; i++)
    if (_coord[i] != v[i])
     return false;
   return true;
  }

  inline bool operator!=(const Vector<T, N>& v) const {
   for(unsigned i = 0; i < N; i++)
    if (_coord[i] != v[i])
     return true;
   return false;
  }

  inline bool operator<(const Vector<T, N>& v) const {
   for (unsigned i = 0; i<N; i++) {
    if (_coord[i] < v[i])
     return true;
    if (_coord[i] > v[i])
     return false;
    if (_coord[i] == v[i])
     continue;
   }
   return false; 
  }

  inline bool operator>(const Vector<T, N>& v) const {
   for (unsigned i=0; i<N; i++) {
    if(_coord[i] > v[i])
     return true;
    if(_coord[i] < v[i])
     return false;
    if(_coord[i] == v[i])
     continue;
   }
   return false; 
  }

 protected:

  value_type _coord[N];
  enum {
   _dim = N,
  };
 };


 //
 //  Vec2 class (2D Vector)
 //    - T: value type
 //
 /////////////////////////////////////////////////////////////////////////////

 template <class T>
 class Vec2 : public Vector<T, 2>
 {
 public:

  typedef typename Vector<T, 2>::value_type value_type;

  inline Vec2() : Vector<T, 2>() {}

  template <class U>
  explicit inline Vec2(const U tab[2]) : Vector<T, 2>(tab) {}

  template <class U>
  explicit inline Vec2(const std::vector<U>& tab) : Vector<T, 2>(tab) {}

  template <class U>
  inline Vec2(const Vector<U, 2>& v) : Vector<T, 2>(v) {}

  inline Vec2(const value_type x,
   const value_type y = 0) : Vector<T, 2>() {
    this->_coord[0] = (T)x;
    this->_coord[1] = (T)y;
  }

  inline value_type x() const {
   return this->_coord[0];
  }

  inline value_type& x() {
   return this->_coord[0];
  }

  inline value_type y() const {
   return this->_coord[1];
  }

  inline value_type& y() {
   return this->_coord[1];
  }
 };


 //
 //  HVec3 class (3D Vector in homogeneous coordinates)
 //    - T: value type
 //
 /////////////////////////////////////////////////////////////////////////////

 template <class T>
 class HVec3 : public Vector<T, 4>
 {
 public:

  typedef typename Vector<T, 4>::value_type value_type;

  inline HVec3() : Vector<T, 4>() {}

  template <class U>
  explicit inline HVec3(const U tab[4]) : Vector<T, 4>(tab) {}

  template <class U>
  explicit inline HVec3(const std::vector<U>& tab) : Vector<T, 4>(tab) {}

  template<class U>
  inline HVec3(const Vector<U, 4>& v) : Vector<T, 4>(v) {}

  inline HVec3(const value_type sx,
   const value_type sy = 0,
   const value_type sz = 0,
   const value_type s = 1) {
    this->_coord[0] = sx;
    this->_coord[1] = sy;
    this->_coord[2] = sz;
    this->_coord[3] = s;
  }

  template <class U>
  inline HVec3(const Vector<U, 3>& sv) {
   this->_coord[0] = (T)sv[0];
   this->_coord[1] = (T)sv[1];
   this->_coord[2] = (T)sv[2];
   this->_coord[3] = (T)1;
  }


  template <class U>
  inline HVec3(const Vector<U, 3>& sv,
   const U) {
    this->_coord[0] = (T)sv[0];
    this->_coord[1] = (T)sv[1];
    this->_coord[2] = (T)sv[2];
    this->_coord[3] = (T)s;
  }

  inline value_type sx() const {
   return this->_coord[0];
  }

  inline value_type& sx() {
   return this->_coord[0];
  }

  inline value_type sy() const {
   return this->_coord[1];
  }

  inline value_type& sy() {
   return this->_coord[1];
  }

  inline value_type sz() const {
   return this->_coord[2];
  }

  inline value_type& sz() {
   return this->_coord[2];
  }

  inline value_type s() const {
   return this->_coord[3];
  }

  inline value_type& s() {
   return this->_coord[3];
  }

  // Acces to non-homogeneous coordinates in 3D

  inline value_type x() const {
   return this->_coord[0] / this->_coord[3];
  }

  inline value_type y() const {
   return this->_coord[1] / this->_coord[3];
  }

  inline value_type z() const {
   return this->_coord[2] / this->_coord[3];
  }
 };


 //
 //  Vec3 class (3D Vector)
 //    - T: value type
 //
 /////////////////////////////////////////////////////////////////////////////

 template <class T>
 class Vec3 : public Vector<T, 3>
 {
 public:

  typedef typename Vector<T, 3>::value_type value_type;

  inline Vec3() : Vector<T, 3>() {}

  template <class U>
  explicit inline Vec3(const U tab[3]) : Vector<T, 3>(tab) {}

  template <class U>
  explicit inline Vec3(const std::vector<U>& tab) : Vector<T, 3>(tab) {}

  template<class U>
  inline Vec3(const Vector<U, 3>& v) : Vector<T, 3>(v) {}

  template<class U>
  inline Vec3(const HVec3<U>& v) {
   this->_coord[0] = (T)v.x();
   this->_coord[1] = (T)v.y();
   this->_coord[2] = (T)v.z();
  }

  inline Vec3(const value_type x,
   const value_type y = 0,
   const value_type z = 0) : Vector<T, 3>() {
    this->_coord[0] = x;
    this->_coord[1] = y;
    this->_coord[2] = z;
  }

  inline value_type x() const {
   return this->_coord[0];
  }

  inline value_type& x() {
   return this->_coord[0];
  }

  inline value_type y() const {
   return this->_coord[1];
  }

  inline value_type& y() {
   return this->_coord[1];
  }

  inline value_type z() const {
   return this->_coord[2];
  }

  inline value_type& z() {
   return this->_coord[2];
  }
 };


 //
 //  Matrix class
 //    - T: value type
 //    - M: rows
 //    - N: cols
 //
 /////////////////////////////////////////////////////////////////////////////

 // Dirty, but icc under Windows needs this
# define _SIZE (M * N)

 template <class T, unsigned M, unsigned N>
 class Matrix
 {
 public:

  typedef T value_type;

  inline Matrix() {
   for (unsigned i = 0; i < _SIZE; i++)
    this->_coord[i] = 0;
  }

  ~Matrix() {
   internal::is_false<(M == 0)>::ensure();
   internal::is_false<(N == 0)>::ensure();
  }

  template <class U>
  explicit inline Matrix(const U tab[M][N]) {
   for (unsigned i = 0; i < M; i++)
    for (unsigned j = 0; j < N; j++)
     this->_coord[i * N + j] = tab[i][j];
  }

  template <class U>
  explicit inline Matrix(const U tab[_SIZE]) {
   for (unsigned i = 0; i < _SIZE; i++)
    this->_coord[i] = tab[i];
  }

  template <class U>
  explicit inline Matrix(const std::vector<U>& tab) {
   for (unsigned i = 0; i < _SIZE; i++)
    this->_coord[i] = tab[i];
  }

  template <class U>
  inline Matrix(const Matrix<U, M, N>& m) {
   for (unsigned i = 0; i < M; i++)
    for (unsigned j = 0; j < N; j++)
     this->_coord[i * N + j] = (T)m(i, j);
  }

  inline value_type operator()(const unsigned i, const unsigned j) const {
   return this->_coord[i * N + j];
  }

  inline value_type& operator()(const unsigned i, const unsigned j) {
   return this->_coord[i * N + j];
  }

  static inline unsigned rows() {
   return M;
  }

  static inline unsigned cols() {
   return N;
  }

  inline Matrix<T, M, N> transpose() const {
   Matrix<T, N, M> res;
   for (unsigned i = 0; i < M; i++)
    for (unsigned j = 0; j < N; j++)
     res(j,i) = this->_coord[i * N + j];
   return res;
  }

  inline void getArray(value_type res[M][N]) const {
   for (unsigned i = 0; i < M; i++)
    for (unsigned j = 0; j < N; j++)
     res[i][j] = this->_coord[i * N + j];
  }

  inline void getArray(value_type res[_SIZE]) const {
   for (unsigned i = 0; i < _SIZE; i++)
    res[i] = this->_coord[i];
  }

  inline const value_type* address() const {
   return this->_coord;
  }

  template <class U>
  inline Matrix<T, M, N>& operator=(const Matrix<U, M, N>& m) {
   if (this != &m)
    for (unsigned i = 0; i < M; i++)
     for (unsigned j = 0; j < N; j++)
      this->_coord[i * N + j] = (T)m(i, j);
   return *this;
  }

  template <class U>
  inline Matrix<T, M, N>& operator+=(const Matrix<U, M, N>& m) {
   for (unsigned i = 0; i < M; i++)
    for (unsigned j = 0; j < N; j++)
     this->_coord[i * N + j] += (T)m(i, j);
   return *this;
  }

  template <class U>
  inline Matrix<T, M, N>& operator-=(const Matrix<U, M, N>& m) {
   for (unsigned i = 0; i < M; i++)
    for (unsigned j = 0; j < N; j++)
     this->_coord[i * N + j] -= (T)m(i, j);
   return *this;
  }

  template <class U>
  inline Matrix<T, M, N>& operator*=(const U lambda) {
   for (unsigned i = 0; i < M; i++)
    for (unsigned j = 0; j < N; j++)
     this->_coord[i * N + j] *= lambda;
   return *this;
  }

  template <class U>
  inline Matrix<T, M, N>& operator/=(const U lambda) {
   if (lambda)
    for (unsigned i = 0; i < M; i++)
     for (unsigned j = 0; j < N; j++)
      this->_coord[i * N + j] /= lambda;
   return *this;
  }

 protected:

  value_type _coord[_SIZE];
 };


 //
 //  SquareMatrix class
 //    - T: value type
 //    - N: rows & cols
 //
 /////////////////////////////////////////////////////////////////////////////

 // Dirty, but icc under Windows needs this
# define __SIZE (N * N)

 template <class T, unsigned N>
 class SquareMatrix : public Matrix<T, N, N>
 {
 public:

  typedef T value_type;

  inline SquareMatrix() : Matrix<T, N, N>() {}

  template <class U>
  explicit inline SquareMatrix(const U tab[__SIZE]) : Matrix<T, N, N>(tab) {}

  template <class U>
  explicit inline SquareMatrix(const std::vector<U>& tab) : Matrix<T, N, N>(tab) {}

  template <class U>
  inline SquareMatrix(const Matrix<U, N, N>& m) : Matrix<T, N, N>(m) {}

  static inline SquareMatrix<T, N> identity() {
   SquareMatrix<T, N> res;
   for (unsigned i = 0; i < N; i++)
    res(i, i) = 1;
   return res;
  }
 };


 //
 // Vector external functions
 //
 /////////////////////////////////////////////////////////////////////////////

 template <class T, unsigned N>
 inline Vector<T, N> operator+(const Vector<T, N>& v1,
  const Vector<T, N>& v2) {
   Vector<T, N> res(v1);
   res += v2;
   return res;
 }

 template <class T, unsigned N>
 inline Vector<T, N> operator-(const Vector<T, N>& v1,
  const Vector<T, N>& v2) {
   Vector<T, N> res(v1);
   res -= v2;
   return res;
 }
 template <class T, unsigned N>
 inline Vector<T, N> operator*(const Vector<T, N>& v,
  const typename Vector<T, N>::value_type r) {
   Vector<T, N> res(v);
   res *= r;
   return res;
 }

 template <class T, unsigned N>
 inline Vector<T, N> operator*(const typename Vector<T, N>::value_type r,
  const Vector<T, N>& v) {
   Vector<T, N> res(v);
   res *= r;
   return res;
 }

 template <class T, unsigned N>
 inline Vector<T, N> operator/(const Vector<T, N>& v,
  const typename Vector<T, N>::value_type r) {
   Vector<T, N> res(v);
   if (r)
    res /= r;
   return res;
 }

 // dot product
 template <class T, unsigned N>
 inline typename Vector<T, N>::value_type operator*(const Vector<T, N>& v1,
  const Vector<T, N>& v2) {
   typename Vector<T, N>::value_type sum = 0;
   for (unsigned i = 0; i < N; i++)
    sum += v1[i] * v2[i];
   return sum;
 }

 // cross product for 3D Vectors
 template <typename T>
 inline Vec3<T> operator^(const Vector<T, 3>& v1,
  const Vector<T, 3>& v2) {
   Vec3<T> res(v1[1] * v2[2] - v1[2] * v2[1],
    v1[2] * v2[0] - v1[0] * v2[2],
    v1[0] * v2[1] - v1[1] * v2[0]);
   return res;
 }

 // stream operator
 template <class T, unsigned N>
 inline std::ostream& operator<<(std::ostream& s,
  const Vector<T, N>& v) {
   unsigned i;
   s << "[";
   for (i = 0; i < N - 1; i++)
    s << v[i] << ", ";
   s << v[i] << "]";
   return s;
 }


 //
 // Matrix external functions
 //
 /////////////////////////////////////////////////////////////////////////////

 template <class T, unsigned M, unsigned N>
 inline Matrix<T, M, N>
  operator+(const Matrix<T, M, N>& m1,
  const Matrix<T, M, N>& m2) {
   Matrix<T, M, N> res(m1);
   res += m2;
   return res;
 }

 template <class T, unsigned M, unsigned N>
 inline Matrix<T, M, N>
  operator-(const Matrix<T, M, N>& m1,
  const Matrix<T, M, N>& m2) {
   Matrix<T, M, N> res(m1);
   res -= m2;
   return res;
 }

 template <class T, unsigned M, unsigned N>
 inline Matrix<T, M, N>
  operator*(const Matrix<T, M, N>& m1,
  const typename Matrix<T, M, N>::value_type lambda) {
   Matrix<T, M, N> res(m1);
   res *= lambda;
   return res;
 }

 template <class T, unsigned M, unsigned N>
 inline Matrix<T, M, N>
  operator*(const typename Matrix<T, M, N>::value_type lambda,
  const Matrix<T, M, N>& m1) {
   Matrix<T, M, N> res(m1);
   res *= lambda;
   return res;
 }

 template <class T, unsigned M, unsigned N>
 inline Matrix<T, M, N>
  operator/(const Matrix<T, M, N>& m1,
  const typename Matrix<T, M, N>::value_type lambda) {
   Matrix<T, M, N> res(m1);
   res /= lambda;
   return res;
 }

 template <class T, unsigned M, unsigned N, unsigned P>
 inline Matrix<T, M, P>
  operator*(const Matrix<T, M, N>& m1,
  const Matrix<T, N, P>& m2) {
   unsigned i, j, k;
   Matrix<T, M, P> res;
   typename  Matrix<T, N, P>::value_type scale;

   for (j = 0; j < P; j++) {
    for (k = 0; k < N; k++) {
     scale = m2(k, j);
     for (i = 0; i < N; i++)
      res(i, j) += m1(i, k) * scale;
    }
   }
   return res;
 }

 template <class T, unsigned M, unsigned N>
 inline Vector<T, M>
  operator*(const Matrix<T, M, N>& m,
  const Vector<T, N>& v) {

   Vector<T, M> res;
   typename Matrix<T, M, N>::value_type scale;

   for (unsigned j = 0; j < M; j++) {
    scale = v[j];
    for (unsigned i = 0; i < N; i++)
     res[i] += m(i, j) * scale;
   }
   return res;
 }

 // stream operator
 template <class T, unsigned M, unsigned N>
 inline std::ostream& operator<<(std::ostream& s,
  const Matrix<T, M, N>& m) {
   unsigned i, j;
   for (i = 0; i < M; i++) {
    s << "[";
    for (j = 0; j < N - 1; j++)
     s << m(i, j) << ", ";
    s << m(i, j) << "]" << std::endl;
   }
   return s;
 }

} // end of namespace vecmat

#endif // VECMAT_H


原因是在windows的頭文件里max,min已經被定義成宏了,所以要出問題!
解決方法:

#ifdef max
#undef max
#endif
去掉max的定義。
min同上。

問題解決。

posted on 2008-11-21 11:21 Alina-zl 閱讀(815) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


<2025年12月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

導航

統計

常用鏈接

留言簿(1)

隨筆檔案

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲毛片一区二区| 亚洲一级黄色| 久久一区二区三区av| 午夜在线视频一区二区区别| 国产精品免费观看在线| 欧美在线啊v一区| 欧美一级大片在线观看| 狠狠综合久久av一区二区老牛| 美女网站久久| 欧美高清视频一区二区三区在线观看| 亚洲精品久久久久久久久久久久久 | 小嫩嫩精品导航| 一区二区三区在线免费视频| 牛夜精品久久久久久久99黑人| 免费在线一区二区| 在线一区二区三区四区| 午夜在线观看欧美| 亚洲激情小视频| 亚洲视频在线观看| 精品999久久久| 亚洲精品久久久久| 国产精品国产三级国产aⅴ入口| 午夜精品亚洲| 欧美成人激情在线| 欧美一区二区三区久久精品茉莉花 | 美女啪啪无遮挡免费久久网站| 欧美成人第一页| 亚洲一区二区三区四区视频| 久久精品卡一| 亚洲一区二区三区四区五区黄| 欧美在线啊v| 一本色道久久综合亚洲二区三区| 亚洲欧美日韩爽爽影院| 亚洲国产合集| 午夜久久福利| 亚洲特色特黄| 欧美大胆成人| 久久国产视频网| 欧美日韩国产色综合一二三四| 久久久精品性| 国产精品国产三级国产专播精品人| 久久久亚洲高清| 欧美视频中文一区二区三区在线观看 | 欧美一级一区| 欧美精品日韩一本| 欧美va天堂| 国产一区在线免费观看| 宅男噜噜噜66一区二区66| 亚洲精品欧洲精品| 久久久欧美精品sm网站| 性欧美xxxx视频在线观看| 欧美精品一区二区三区在线看午夜| 久久人人爽人人爽| 国产欧美欧洲在线观看| 亚洲精品五月天| 亚洲激情网站| 免费影视亚洲| 亚洲第一精品夜夜躁人人躁| 伊人久久亚洲影院| 久久疯狂做爰流白浆xx| 亚洲欧美日韩另类精品一区二区三区| 欧美激情性爽国产精品17p| 乱人伦精品视频在线观看| 国产女人精品视频| 亚洲影视在线| 久久超碰97中文字幕| 国产精品色婷婷久久58| 亚洲伊人观看| 欧美一区在线看| 国产麻豆精品久久一二三| 亚洲欧美中文在线视频| 欧美在线影院| 国产欧美一区二区精品忘忧草| 亚洲视频一区二区| 亚洲欧美日韩在线不卡| 国产麻豆精品在线观看| 欧美影片第一页| 久久综合色播五月| 一区视频在线播放| 久久这里有精品视频| 欧美成人午夜剧场免费观看| 亚洲国产欧美在线| 欧美激情综合五月色丁香| 亚洲激情成人网| 亚洲一区在线视频| 国产伦精品一区二区三区照片91| 亚洲欧美日韩高清| 麻豆精品国产91久久久久久| 最新日韩在线| 欧美午夜久久| 久久久xxx| 日韩视频一区二区三区在线播放免费观看 | 久久久蜜桃精品| 亚洲精品美女免费| 欧美伊人久久| 亚洲日本理论电影| 国产精品日日摸夜夜摸av| 欧美亚洲在线观看| 亚洲国产欧美一区二区三区丁香婷| 一区二区成人精品| 国产精品爽爽爽| 另类专区欧美制服同性| 999亚洲国产精| 久久手机免费观看| 亚洲一区在线观看视频 | 欧美成人免费播放| 亚洲一区二区三区中文字幕在线| 久久米奇亚洲| 亚洲在线观看| 亚洲福利在线观看| 国产精品美女久久久久aⅴ国产馆| 久久精品视频免费观看| 夜夜嗨av一区二区三区免费区 | 亚洲精品国偷自产在线99热| 国产欧美日韩一区| 欧美人与性动交cc0o| 久久久精品国产免费观看同学| 亚洲美女视频在线观看| 欧美gay视频激情| 欧美在线三区| 亚洲深夜福利网站| 91久久精品国产91久久性色| 国产一区二区三区av电影| 欧美日韩在线影院| 免费视频久久| 老司机午夜免费精品视频| 欧美一区三区二区在线观看| 中文精品视频一区二区在线观看| 亚洲高清一二三区| 毛片基地黄久久久久久天堂| 欧美在线不卡| 亚洲中无吗在线| 中国成人黄色视屏| 99pao成人国产永久免费视频| 亚洲第一色中文字幕| 红桃视频国产精品| 国产午夜精品麻豆| 国产精品夜色7777狼人| 国产精品成人v| 欧美色网一区二区| 欧美三级午夜理伦三级中文幕| 欧美理论在线| 欧美三级小说| 国产精品久久国产三级国电话系列| 欧美va亚洲va国产综合| 猛干欧美女孩| 欧美大片专区| 欧美日本亚洲| 欧美网站在线观看| 国产精品久久久久婷婷| 国产精品欧美日韩久久| 国产精品久久久久久久7电影 | 久久亚洲精品欧美| 久久免费99精品久久久久久| 久久综合导航| 欧美久久九九| 国产精品成人播放| 国产日韩欧美综合一区| 国产视频一区在线观看| 一区二区亚洲| 亚洲麻豆视频| 亚洲综合导航| 久久综合久久综合九色| 亚洲电影免费观看高清完整版在线观看| 亚洲国产综合视频在线观看 | 性做久久久久久久免费看| 久久成人综合视频| 麻豆9191精品国产| 亚洲欧洲一区二区三区在线观看 | 久久久久综合| 亚洲第一网站| 这里只有精品电影| 久久精品国产亚洲精品 | 先锋影音久久| 欧美a级理论片| 国产精品久久网| 精品不卡视频| 在线一区二区三区做爰视频网站| 欧美一区二区视频网站| 欧美成人乱码一区二区三区| 一本一本大道香蕉久在线精品| 欧美一区二区三区四区高清 | 久久青草欧美一区二区三区| 欧美韩日精品| 国产亚洲综合精品| 亚洲毛片网站| 久久婷婷影院| 在线视频日韩精品| 久久综合伊人77777麻豆| 国产精品久久久久久久久借妻 | 欧美一区二区视频在线观看2020| 欧美国产1区2区| 亚洲欧美日本视频在线观看| 欧美成人高清视频| 国内精品视频在线观看| 亚洲影院色无极综合| 欧美电影免费观看网站| 午夜视频一区二区| 欧美日韩亚洲一区二区三区在线观看| 国自产拍偷拍福利精品免费一|