首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

【搜集优秀的代码段】

2013-01-11 
【征集优秀的代码段】idea来自最近公司内部搜集优秀的代码片段的活动。最近江南style特火,作为开发人员的我们

【征集优秀的代码段】
idea来自最近公司内部搜集优秀的代码片段的活动。
最近江南style特火,作为开发人员的我们,长时间的coding肯定已经形成了自己独特的code style。没有标准 没有对错 没有最好 只有更好。欢迎大家来晾下自己优秀的代码片段。下面我先贴一段自己的片段,抛砖引玉~


来看看
[解决办法]
【搜集优秀的代码段】
凑个热闹
[解决办法]
【搜集优秀的代码段】 风格差不多。
[解决办法]
我编程规范以google c++ style为参考.
大致与楼主相同吧,与楼主不同的一点是  私有函数我不以下划线开始
平常是vim挂一堆插件,  许多样式都是自动格式化或者插件帮助生成的.  
如下面的代码, 注释的部分与main函数的框架都由插件搞定, tab统一转换成4个空格.


// Last Update:2012-12-01 13:50:27
/**
 * @file main.cpp
 * @brief 
 * @author xxg@jyxtec.com
 * @version 0.1.00
 * @date 2012-12-01
 */

#include <stdio.h>

/* --------------------------------------*/
/**
 * @brief test printf "Hello World"
 */
/* --------------------------------------*/
void test(void)
{
    printf("Hello World\n");
}

    int


main( int argc, char **argv )
{
    test();
    return 0;
}


[解决办法]
不好意思现,围观下【搜集优秀的代码段】
[解决办法]
顶一个!!!
[解决办法]
还木有风格,慢慢修炼
[解决办法]
俺还不知道自己属于那一流。平常就这样写的。学生派的。
/*
*created by Reage at 2012 November 28
*description: 实现kmp算法
*
*
*blog:http://blog.csdn.net/rentiansheng
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

/*
*description:分析模式串,从而得到字串复用的数据
*parameter:
*    s:模式串
*    next:保存模式串回溯位置的坐标
*/
void  get_next (char *s, int *next){
    int len = strlen (s);
    int i,j = 0;//j表示可以复用的字符数
    //当模式串不为空的时候,才可以继续
    if (len){
        next[0] = 0;    //第一个位置位0,没有可用复的机会了。
        if (1 == len) return ;
        next[1] = 0;
        for (i = 1; i < len; i++){
            //判断时候与可以服用,如果可以复用,复用的字符数加1。
            if (s[i] == s[j]) j++;
            else{//如果比较的位置不想等,将可复用字符数清空。
                j = 0;
                //还需比较时候与模式串的开始位置的第一个字符是否相等。之前只与满足序列下一个比较,无法否定其不可以产生新的序列。
                if (s[i] == s[j]) j++;
            }
            //因为下一个才是假设位置与主串位置不同,因此要加1的。
            next[i+1] = j;
        }
    }
}

/*
*description:KMP算法的实现
*parameter:
*    s:主串
*    p_s:模式串
*/
int kmp ( char *s, char *p_s){
    int s_len = strlen (s);
    int p_len = strlen (p_s);
    int *next = (int *) malloc (p_len * sizeof(int));
    int i = 0;
    int j = 0;
    get_next (p_s, next);
    //当主串和模式串其中一个比较值出了字符串的长度,表示比较结束
    while (i < s_len && j < p_len){
        if (j == 0 
[解决办法]
 s[i] == p_s[j]){
            //当模式串中的数据比较完了,表示已经找到所要的数据了。


            if( j == p_len-1 ) return i-p_len + 1);
            //没有到最后,比较下一个位置的数据
            i++,j++;
        }
        else{//当前比较位置不同,回溯模式串
            j = next[j];
        }


    }
    return -1;
}

int main (int argc, char *argv[]){
    char s[] = "acabaabaabcacaabc";
    char p[] = "abaabcac";
    printf ("%d\n", kmp (s, p) - strlen (p) + 1);
    return 0;
}
[解决办法]


[解决办法]
我的c# ,不好意思贴出来。。。
[解决办法]
【搜集优秀的代码段】有没有谁共献函数式语言的代码?
[解决办法]
膜拜的路过!都是大神啊!
【搜集优秀的代码段】
[解决办法]

[解决办法]
typedef  unsigned char  BYTE;
typedef  unsigned long  DWORD;
typedef  unsigned short WORD;
#pragma pack(1)
struct PACKET{
BYTE  btHead0; 
BYTE  btHead1;        
WORD  wLen;
BYTE  cmd0;
BYTE  cmd1;
BYTE  PkCount;
BYTE  pData[0];       //数据域,包含数据校验和结尾。

//根据协议中的长度来得出包的长度
int GetPacketLen() 
{
return wLen + sizeof(BYTE) + sizeof(BYTE) + sizeof(WORD);
}
//得到帧的数据区长度(包含校验和和帧尾)
int GetDataLen()
{
return GetPacketLen() - sizeof(PACKET);
}
};
 变长结构体的使用,共大家分享。
#pragma pack()


[解决办法]
#pragma once

namespace std {

namespace convert_namespace {

template<typename __t1, typename __t2>
struct Convert
{
const __t1 operator () (const __t2& nValue) const
{
__t1 result_ = boost::numeric_cast<__t1>(nValue);
return result_;
}
};

template<typename __t1>
struct Convert<__t1, char *>
{
const __t1 operator () (const char * nValue) const


{
__t1 result_ = boost::lexical_cast<__t1>(nValue);
return result_;
}
};

template<typename __t1>
struct Convert<__t1, string>
{
const __t1 operator () (const string& nValue) const
{
__t1 result_ = boost::lexical_cast<__t1>(nValue);
return result_;
}
};

template<typename __t1>
struct Convert<__t1, wchar_t *>
{
const __t1 operator () (const wchar_t * nValue) const
{
__t1 result_ = boost::lexical_cast<__t1>(nValue);
return result_;
}
};

template<typename __t1>
struct Convert<__t1, wstring>
{
const __t1 operator () (const wstring& nValue) const
{
__t1 result_ = boost::lexical_cast<__t1>(nValue);
return result_;
}
};

template<>
struct Convert<bool, char *>
{
const bool operator () (const char * nValue) const
{
string value_(nValue);
boost::trim(value_);
if ("true" == value_)
{
return true;
}
return false;
}
};

template<>
struct Convert<bool, string>
{
const bool operator () (const string& nValue) const
{
string value_ = nValue;
boost::trim(value_);
if ("true" == value_)
{
return true;
}
return false;
}
};

template<>
struct Convert<bool, wchar_t *>
{
const bool operator () (const wchar_t * nValue) const
{
wstring value_(nValue);
boost::trim(value_);
if (L"true" == value_)
{
return true;
}
return false;
}
};

template<>
struct Convert<bool, wstring>
{
const bool operator () (const wstring& nValue) const
{
wstring value_(nValue);
boost::trim(value_);
if (L"true" == value_)
{
return true;
}
return false;
}
};

template<>
struct Convert<__i8, char *>
{
const __i8 operator () (const char * nValue) const
{
__i32 result32_ = boost::lexical_cast<__i32>(nValue);
__i8 result_ = boost::numeric_cast<__i8>(result32_);
return result_;
}
};

template<>
struct Convert<__i8, string>
{
const __i8 operator () (const string& nValue) const
{
__i32 result32_ = boost::lexical_cast<__i32>(nValue);
__i8 result_ = boost::numeric_cast<__i8>(result32_);
return result_;
}
};

template<>
struct Convert<__i8, wchar_t *>
{
const __i8 operator () (const wchar_t * nValue) const
{
__i32 result32_ = boost::lexical_cast<__i32>(nValue);


__i8 result_ = boost::numeric_cast<__i8>(result32_);
return result_;
}
};

template<>
struct Convert<__i8, wstring>
{
const __i8 operator () (const wstring& nValue) const
{
__i32 result32_ = boost::lexical_cast<__i32>(nValue);
__i8 result_ = boost::numeric_cast<__i8>(result32_);
return result_;
}
};

//
template<>
struct Convert<__u8, char *>
{
const __i8 operator () (const char * nValue) const
{
__i32 result32_ = boost::lexical_cast<__i32>(nValue);
__u8 result_ = boost::numeric_cast<__u8>(result32_);
return result_;
}
};

template<>
struct Convert<__u8, string>
{
const __u8 operator () (const string& nValue) const
{
__i32 result32_ = boost::lexical_cast<__i32>(nValue);
__u8 result_ = boost::numeric_cast<__u8>(result32_);
return result_;
}
};

template<>
struct Convert<__u8, wchar_t *>
{
const __u8 operator () (const wchar_t * nValue) const
{
__i32 result32_ = boost::lexical_cast<__i32>(nValue);
__u8 result_ = boost::numeric_cast<__u8>(result32_);
return result_;
}
};

template<>
struct Convert<__u8, wstring>
{
const __u8 operator () (const wstring& nValue) const
{
__i32 result32_ = boost::lexical_cast<__i32>(nValue);
__u8 result_ = boost::numeric_cast<__u8>(result32_);
return result_;
}
};

template<typename __t1>
struct Convert<string, __t1>
{
const string operator () (const __t1& nValue) const
{
string result_ = boost::lexical_cast<string>(nValue);
return result_;
}
};

template<typename __t1>
struct Convert<wstring, __t1>
{
const wstring operator () (const __t1& nValue) const
{
wstring result_ = boost::lexical_cast<wstring>(nValue);
return result_;
}
};

template<>
struct Convert<string, bool>
{
const string operator () (const bool nValue) const
{
if (true == nValue)
{
return "true";
}
return "false";
}
};

template<>
struct Convert<wstring, bool>
{
const wstring operator () (const bool nValue) const
{
if (true == nValue)
{
return L"true";
}
return L"false";
}
};

template<>
struct Convert<string, wchar_t *>
{
const string operator () (const wchar_t * nValue) const
{
setlocale(LC_ALL, "");

size_t bufSize_ = 0;
size_t len_ = ::wcslen(nValue);


wcstombs_s(&bufSize_, NULL, 0, nValue, len_);

char * buf_ = new char[bufSize_];
wcstombs_s(&bufSize_, buf_, bufSize_, nValue, len_);
string result_(buf_, bufSize_);
delete[] buf_;

setlocale(LC_ALL, NULL);
return result_;
}
};

template<>
struct Convert<string, wstring>
{
const string operator () (const wstring& nValue) const
{
setlocale(LC_ALL, "");

size_t bufSize_ = 0;
const wchar_t * value_ = nValue.c_str();
size_t len_ = nValue.length();
wcstombs_s(&bufSize_, NULL, 0, value_, len_);

char * buf_ = new char[bufSize_];
wcstombs_s(&bufSize_, buf_, bufSize_, value_, len_);
string result_(buf_, bufSize_);
delete[] buf_;

setlocale(LC_ALL, NULL);
return result_;
}
};


template<>
struct Convert<wstring, char *>
{
const wstring operator () (const char * nValue) const
{
setlocale(LC_ALL, "");

size_t bufSize_ = 0;
size_t len_ = ::strlen(nValue);
mbstowcs_s(&bufSize_, NULL, 0, nValue, len_);

wchar_t * buf_ = new wchar_t[bufSize_];
mbstowcs_s(&bufSize_, buf_, bufSize_, nValue, len_);
wstring result_(buf_, bufSize_);
delete[] buf_;

setlocale(LC_ALL, NULL);

return result_;
}
};

template<>
struct Convert<wstring, string>
{
const wstring operator () (const string& nValue) const
{
setlocale(LC_ALL, "");

size_t bufSize_ = 0;
const char * value_ = nValue.c_str();
size_t len_ = nValue.length();
mbstowcs_s(&bufSize_, NULL, 0, value_, len_);

wchar_t * buf_ = new wchar_t[bufSize_];
mbstowcs_s(&bufSize_, buf_, bufSize_, value_, len_);
wstring result_(buf_, bufSize_);
delete[] buf_;

setlocale(LC_ALL, NULL);

return result_;
}
};

}

template<typename __t1, typename __t2>
const __t1 _convert(const __t2& nValue)
{
return convert_namespace::Convert<__t1, __t2>()(nValue);
}

}



有人敢和我拼吗?
[解决办法]
#include <iostream>

int main(int argc, char* argv[])
{
    std::cout << "Hello World." << std::endl;
    return 0; // return with no err.
}


这必然是最优秀的代码。优秀的程序员都是从“Hello World.”走出来的,你敢说不优秀?
[解决办法]
别人的就是自己的
[解决办法]
http://www.baidu.com/s?wd=main+zhao4zhong1+site%3Atopic.csdn.net&rsv_bp=0&rsv_spt=3&rsv_sug3=29&rsv_sug=0&rsv_sug1=24&rsv_sug4=10077&inputT=14985

【搜集优秀的代码段】
[解决办法]
代码无止境、思想最前行【搜集优秀的代码段】
[解决办法]
看到以下划线开头的变量或者函数就恶心。
下划线开头的变量一般都是留给编译器使用的, 那天你的变量或者函数和编译器库中的同名你就杯具了。
[解决办法]
菜鸟来围观一下!
[解决办法]

/**
* Learn from ogre.
*
* This program is just for fun or demo, in the hope that it  
* will be useful, you can redistribute it and/or modify freely.
*
* Time: 2012/11/19
* File: EnnSceneNode.h
**/

#ifndef EnnSceneNode_h__
#define EnnSceneNode_h__

#include "EnnPrerequisites.h"
#include "EnnAxisAlignedBox.h"

namespace Enn
{
class SceneNode : public SceneNodeAlloc
{
public:
enum TransformSpace
{
/// Transform is relative to the local space
TS_LOCAL,
/// Transform is relative to the space of the parent node
TS_PARENT,
/// Transform is relative to world space
TS_WORLD
};

typedef map<String, MovableObject*>::type ObjectMap;
typedef ObjectMap::iterator ObjectIterator;
typedef ObjectMap::const_iterator ObjectConstIterator;

typedef map<String, SceneNode*>::type ChildMap;
typedef ChildMap::iterator ChildIterator;
typedef ChildMap::iterator ChildConstIterator;

public:
class Listener
{
public:
Listener();
virtual ~Listener();

/** Called when a node gets updated.
@remarks
Note that this happens when the node's derived update happens,
not every time a method altering it's state occurs. There may 
be several state-changing calls but only one of these calls, 
when the node graph is fully updated.
*/
virtual void SceneNodeUpdated(SceneNode*)
{

}

/** Node is being destroyed */
virtual void SceneNodeDestroyed(SceneNode*)
{

}

/** Node has been attached to a parent */
virtual void SceneNodeAttached(SceneNode*)
{

}

/** Node has been detached from a parent */
virtual void SceneNodeDetached(SceneNode*)
{

}
};

public:
SceneNode(const String& name, SceneManager* creator);
virtual ~SceneNode();

virtual const String& getName() const
{
return _name;
}

/** Gets this node's parent (NULL if this is the root).
        */
virtual SceneNode* getParent() const;

virtual void setParent(SceneNode* parent);

/** Returns a quaternion representing the nodes orientation.


        */
virtual const quat& getOrientation() const;

/** Sets the orientation of this node via a quaternion.
        @remarks
            Orientations, unlike other transforms, are not always inherited by child nodes.
            Whether or not orientations affect the orientation of the child nodes depends on
            the setInheritOrientation option of the child. In some cases you want a orientating
            of a parent node to apply to a child node (e.g. where the child node is a part of
            the same object, so you want it to be the same relative orientation based on the
            parent's orientation), but not in other cases (e.g. where the child node is just
            for positioning another object, you want it to maintain it's own orientation).
            The default is to inherit as with other transforms.
        @par
            Note that rotations are oriented around the node's origin.
        */
        virtual void setOrientation( const quat& q );

virtual const vec3& getPosition() const;

virtual void setPosition(const vec3& pos);

virtual const vec3& getScale() const;

virtual void setScale(const vec3& scale);

virtual void scale(const vec3& scale);

virtual void translate(const vec3& trans, TransformSpace relativeTo = TS_PARENT);

virtual void roll(const Radian& angle, TransformSpace relativeTo = TS_LOCAL);

virtual void pitch(const Radian& angle, TransformSpace relativeTo = TS_LOCAL);

virtual void yaw(const Radian& angle, TransformSpace relativeTo = TS_LOCAL);

/** Rotate the node around an arbitrary axis.
        */
        virtual void rotate(const vec3& axis, const Radian& angle, TransformSpace relativeTo = TS_LOCAL);

/** Rotate the node around an aritrary axis using a Quarternion.
        */
        virtual void rotate(const quat& q, TransformSpace relativeTo = TS_LOCAL);



virtual SceneNode* createChild(
const String& name,
const vec3& trans = vec3::ZERO,
const quat& rot = quat::IDENTITY);

virtual SceneNode* createChildImpl(const String& name);

virtual void addChild(SceneNode* child);

virtual uint16 numChildren() const;

virtual SceneNode* getChild(const String& name) const;

virtual SceneNode* removeChild(const String& name);

virtual SceneNode* removeChild(SceneNode* scene_node);

virtual void removeAllChild();

virtual void updateFromParent();

virtual void updateFromParentImpl();

virtual const quat& getWorldOrientation();

virtual const vec3& getWorldScale();

virtual const vec3& getWorldPosition();

virtual const mat4& getWorldTransform();

virtual void setListener(Listener* listener);

virtual Listener* getListener() const;

virtual void setParentTransformCacheUpdated(bool dirty = true);

virtual void updateTransform();

protected:
virtual void setSelfTransformCacheDirty(bool dirty = true);
virtual void setChildTransformCacheDirty(bool dirty = true); 
virtual bool isSelfTransformCacheDirty() const;
virtual bool isChildTransformCacheDirty() const;
virtual bool isParentTransformCacheDirty() const;

virtual void transformCacheDirty(bool dirty = true);

protected:
String_name;
ObjectMap_object_list;
ChildMap_child_list;
SceneManager*_creator;
AxisAlignedBox_local_aabb;
SceneNode*_parent;
quat_orientation;
vec3_position;
vec3_scale;
Listener*_listener;
quat_world_orientation;
vec3_world_scale;
vec3_world_position;
mat4_world_matrix;
bool_self_transform_cache_dirty;
bool_child_transform_cache_dirty;
bool_self_world_matrix_dirty;
bool_parent_transform_cache_dirty;
};
}
#endif    /* EnnSceneNode_h__ */


[解决办法]
【搜集优秀的代码段】
问个问题啊那些专家分那里来的
[解决办法]
    cmd = new QProcess();
//    movePoint = new QPoint(30, 30);
    tableColumn = 6;//标记坐标表格的列数
    choiceFlag = true;

    mainGridLayout = new QGridLayout(this);
    topHBoxLayout = new QHBoxLayout();
    leftVBoxLayout = new QVBoxLayout();
    rightVBoxLayout = new QVBoxLayout();
    underHBoxLayout = new QHBoxLayout();

    leftModel = new QStandardItemModel(this);
    leftModel->setColumnCount(tableColumn);
    leftModel->setHeaderData(0, Qt::Horizontal, tr("序号"));
    leftModel->setHeaderData(1, Qt::Horizontal, tr("文件名"));


    leftModel->setHeaderData(2, Qt::Horizontal, tr("文件路径"));
    leftModel->setHeaderData(3, Qt::Horizontal, tr("类型"));
    leftModel->setHeaderData(4, Qt::Horizontal, tr("状态"));
    leftModel->setHeaderData(5, Qt::Horizontal, tr("加密时间"));
    leftTableView = new QTableView();
    leftTableView->setModel(leftModel);
    //表格属性设置
    leftTableView->verticalHeader()->setVisible(false);//隐藏列表头,需要#include <QHeaderView>
    leftTableView->setSelectionBehavior(QAbstractItemView::SelectRows);//整行选择
    leftTableView->setSelectionMode(QAbstractItemView::SingleSelection);//一次只能选择单个,防止Ctrl或者Shift进行多个选择
    leftTableView->setShowGrid(true);//显示网格线
    leftTableView->setEditTriggers(QTableView::NoEditTriggers);//表格禁止编辑
    leftTableView->resizeColumnsToContents();//表格的列根据内容自动调整
    leftTableView->resizeRowsToContents();//表格的行根据内容自动调整
    leftTableView->horizontalHeader()->setResizeMode(QHeaderView::Stretch);//暂时固定表格列的宽度
//    leftTableView->setColumnWidth(0, 40);//初始化0列的宽度
//    leftTableView->horizontalHeader()->setResizeMode(0, QHeaderView::Fixed);//固定0列的宽度
    leftVBoxLayout->addWidget(leftTableView);
    leftVBoxLayout->setMargin(10);
    leftVBoxLayout->setSizeConstraint(QLayout::SetFixedSize);


    rightTableView = new QTableView();
    rightModel = new QStandardItemModel(this);
    rightModel->setColumnCount(2);
    rightModel->setHeaderData(0, Qt::Horizontal, tr("已加密的文件"));
    rightModel->setHeaderData(1, Qt::Horizontal, tr("类型"));
    rightTableView->setModel(rightModel);
    rightTableView->verticalHeader()->setVisible(false);
    rightTableView->setSelectionBehavior(QAbstractItemView::SelectRows);
    rightTableView->setSelectionMode(QAbstractItemView::SingleSelection);
    rightTableView->setColumnWidth(0, 100);
    rightTableView->setShowGrid(true);
    rightTableView->setEditTriggers(QListView::NoEditTriggers);
    rightTableView->horizontalHeader()->setResizeMode(QHeaderView::Fixed);
//    rightTableView->layout();

    rightVBoxLayout->addWidget(rightTableView);
    rightVBoxLayout->setMargin(10);


    topHBoxLayout->addLayout(leftVBoxLayout);
    topHBoxLayout->addLayout(rightVBoxLayout);
    //setStretchFactor()设置左右控件的比例
    topHBoxLayout->setStretchFactor(leftVBoxLayout, 3);
    topHBoxLayout->setStretchFactor(rightVBoxLayout, 1);

    clearPushButton = new QPushButton(tr("清空"));
    addPushButton = new QPushButton(tr("选择文件"));
    addMenu = new QMenu();
    addFileAction = new QAction(QIcon("images//openfile.png"), tr("选择文件"), this);
    addFolderAction = new QAction(QIcon("images//openfolder.png"), tr("选择文件夹"), this);


    addMenu->addAction(addFileAction);
    addMenu->addAction(addFolderAction);
    addPushButton->setMenu(addMenu);//设置为下拉式
    connect(addFileAction, SIGNAL(triggered()), this, SLOT(addFile()));
    connect(addFolderAction, SIGNAL(triggered()), this, SLOT(addFolder()));
    encryptionPushButton = new QPushButton(tr("加密"));
    decryptPushButton = new QPushButton(tr("解密"));   
    underHBoxLayout->addWidget(clearPushButton, 1);
    underHBoxLayout->addWidget(addPushButton, 1);
    underHBoxLayout->addWidget(encryptionPushButton, 1);
    underHBoxLayout->addWidget(decryptPushButton, 1);  
    underHBoxLayout->setSpacing(30);
    underHBoxLayout->setAlignment(Qt::AlignRight 
[解决办法]
 Qt::AlignVCenter);//控件居中

    mainGridLayout->addLayout(topHBoxLayout, 0, 0);
    mainGridLayout->addLayout(underHBoxLayout, 1, 0);
//    mainGridLayout->setColumnStretch(0, 1);
//    mainGridLayout->setColumnStretch(1, 3);
    mainGridLayout->setMargin(15);

    //固定整个窗体的大小
    this->setFixedSize(1000, 600);


    encryptionFileName = 1;//标记”文件名“列
    encryptionFilePath = 2;//标记“文件路径”列
    fileType = 3;//标记“类型列”
    encryptionStatic = 4;//标记“状态列”列
    encryptionTime = 5;//标记“加密时间”列
    nullIndex = leftModel->index(-1, -1);//设置行选择为空

    readSettings();//构造时读取信息

//    connect(addPushButton, SIGNAL(clicked()), this, SLOT(moveMenu()));

    //关联相关槽
    connect(clearPushButton, SIGNAL(clicked()), this, SLOT(clearData()));
    connect(encryptionPushButton, SIGNAL(clicked()), this, SLOT(encryptionData()));
    connect(decryptPushButton, SIGNAL(clicked()), this, SLOT(decryptData()));
    connect(this, SIGNAL(stateChangeSignal(QString)), this, SLOT(stateChangeSlot(QString)));


【搜集优秀的代码段】
大专学生。。。刚学一年多。。能看的也就这代码了。。
[解决办法]
【搜集优秀的代码段】
[解决办法]
【搜集优秀的代码段】
风格修炼中的学习!
[解决办法]
猥琐的我一般在写完你的代码后,还会
class GLStroke
{
   ...
 private:
   GLStorke(const GLStroke& stroke);
   GLstroke& operator =(const GLStroke& stroke);
}
[解决办法]
我打算先来段Js:
Batch: function ()
    {
        if (!C.Batch.caller.Initialized)


         {
        var Ns = C.Slice.apply(C.Batch.caller.arguments);
        if (Ns.length > 1)
        {
            for (var i = 0; i < Ns.length; i++)
            {
                C.Batch.caller.prototype.Init(C.G(Ns[i]));
            }
        }
        else
        {
            C.Batch.caller.prototype.Init(C.G(Ns[0]))
        }
        C.Batch.caller.Initialized = true;
        }
    },


[解决办法]
提升自身能力的最好方法就是仔细的欣赏别人的代码~围观!
[解决办法]
我只是来打酱油的。
[解决办法]
public ActionResult loadbook(PlanContentType type, long categoryid = 0, string keyword = "", int page = 1, int totalsize = 0, int loadtype = 1)
        {
            var model = new AddPlanModels();
            var predicate = new List<Expression<Func<GlobalParameterInfo, bool>>>();
            if (type == PlanContentType.知识学习)
            {
                predicate.Add(x => x.Book.BookType == BookType.课本 
[解决办法]
 x.Book.BookType == BookType.系统课本);
            }
            if (type == PlanContentType.书本阅读)
            {
                predicate.Add(x => x.Book.BookType == BookType.文集 
[解决办法]
 x.Book.BookType == BookType.辅导书);
            }
            if (categoryid > 0)
                predicate.Add(x => x.Book.CategoryId >= categoryid && x.Book.CategoryId < categoryid.LongNext());
            if (!string.IsNullOrWhiteSpace(keyword))
                predicate.Add(x => x.Book.Title.Contains(keyword) 


[解决办法]
 x.Book.Description.Contains(keyword) 
[解决办法]
 x.Teacher.name.Contains(keyword));
            var orderby = new Expression<Func<GlobalParameterInfo, Orderby>>[] { x => x.Book.CreateDate.Descending() };
            var join = new List<Expression<Func<GlobalParameterInfo, Join>>>() { x => x.Inner(Tables.Teacher.ToString(), o => o.Book.TeacherID == o.Teacher.TeacherID) };
            var field = new Expression<Func<GlobalParameterInfo, Field>>[] { x => x.Field(f => f.Book.BookId, f => f.Book.Title, f => f.Book.TitlePage, f => f.Book.OpenMethod, f => f.Book.CreateDate, f => f.Book.Status, f => f.Teacher.name.AS("Author")) };

            model.Page = 1;
            model.CustomPageSize = 12;
            model.PlanBookList = BookManager.GetPage<PlanBookInfo>(field, join, predicate, orderby, model.Page - 1, model.PageSize);
            model.TotalSize = BookManager.GetCount(x => x.Field(f => f.Book.BookId), join, predicate);
            model.LoadType = loadtype;
            return View("_PartialBookList", model);
        }


我就不信发不出去
[解决办法]

/*
 *让大家笑话了,每次面试前我都要练习这些基本功的
 *Just Call Me Fish ORZ...
 */
#include <cstdio>

typedef struct Node
{
int data;
Node *next;
}Node;

Node *initList (int n)
{
Node *head, *tail;

Node *newNode = NULL;

for (int i=0; i<n; i++) {
newNode = new Node;
newNode->data = i;

if (i == 0)
head = tail = newNode;

tail->next = newNode;
tail = newNode;
tail->next = NULL;
}

return head;
}

Node *reverseList (Node *head)
{
if (head == NULL 
[解决办法]
 head->next == NULL)
return head;
Node *p1, *p2, *p3;
p1 = head;
p2 = p1->next;
p3 = p2->next;

p1->next = NULL;

while (p3 != NULL) {
p2->next = p1;
p1 = p2;
p2 = p3;
p3 = p3->next;
}
p2->next = p1;
head = p2;
return head;
}



Node *mergeList (Node *head1, Node *head2)//head1 & head2各自有序
{
Node *p1 = head1;
Node *p2 = head2;

if (p2 == NULL)
return p1;
if (p1 == NULL)
return p2;

Node *head, *tail;

if (p1->data > p2->data) {
head = p2;
p2 = p2->next;
}
else {
head = p1;
p1 = p1->next;
}//find head

tail = head;

while (p1 != NULL && p2 != NULL) {
if (p1->data > p2->data) {
tail->next = p2;
p2 = p2->next;
}
/*else {//保留重复的 
tail->next = p1;
p1 = p1->next;
}
*/
//不保留重复的,注意选择head的时候可能重复
else if (p1->data < p2->data) {
tail->next = p1;
p1 = p1->next;
}
else {
p1 = p1->next;
continue;
}

tail = tail->next;
}

if (p1 == NULL)
tail->next = p2;
else if (p2 == NULL)
tail->next = p1;

return head;
}

void printList (Node *head)
{
for (Node *h=head; h!=NULL; h=h->next)
printf ("%d ", h->data);
printf ("\n");
return;
}

#define STRING"Hello World\n"

int main (int argc, char **argv)
{
//Node *head = initList(5);
//Node *head2 = initList(9);
//printList (head);
//printList (head2);

//head = reverseList (head);

//Node *h = mergeList(head, head2);

//printList (h);
printf (STRING);
return 0;
}


[解决办法]
大家都是C++style。
贴下我的jquery style.

 var calendarEvents = {};
        function getEvents(month, year) {
            var start_date = '';
            if (year != undefined && month != undefined) {
                start_date = year + "/";
                start_date += month + "/";
                start_date += '1';
            }
            $.ajax({
                url:"/Home/BeforShowDay?date="+start_date,
                type: 'POST',
                dataType: 'json',
                processdata: false,


                contentType: 'application/json; charset=utf-8',
                success: function (data) { calendarEvents = data; },
                error: function (xhr, ajaxOptions, thrownError) { $("#datepicker").datepicker("hide"); },
                complete: function (x, y) { $("#datepicker").datepicker("refresh"); }
            });
        }
        $(function () {
            $("#datepicker").datepicker({
                beforeShowDay: function (date) {
                    var day = date.getDate() - 1;
                    if (day in calendarEvents) {
                        if (calendarEvents[day] == undefined) {
                            return [true, ''];
                        }
                        else if (calendarEvents[day].Model.train != "") {
                            return [true, 'td-hight-light', calendarEvents[day].Model.train];
                        }
                    }
                    return [false, ''];
                },
                onChangeMonthYear: function (year, month, inst) {
                    calendarEvents = {};
                    getEvents(month, year);
                },
                onSelect: function (dateText, inst) { window.location = '/LearnNet/TrainProj/TrainsByDate?date=' + dateText }  
            });


            var calendarDate = $("#datepicker").datepicker("getDate");
            getEvents(calendarDate.getMonth() + 1, calendarDate.getFullYear());


[解决办法]
比起优秀的代码,我更喜欢优雅的代码.
[解决办法]
凑个热闹。。。
[解决办法]
易读,易维护的代码更好
[解决办法]
围观优秀代码
[解决办法]

[解决办法]
咋没人贴个"hello world!"?
[解决办法]
最近堆到头要炸的代码。 
【搜集优秀的代码段】

  /*****************************************************************************
      名  称:SP_DM_UPDATETDMDELDATE
      功  能:更新表 TDMDELDATE
      入  参:TARGETTABLENAME 目标表名称
              ISDEL 是否进行删除或增量 
              DELDATE 删除的时间点              
      出  参:
      创建者:ZZY
      描  述:根据传入的目标表名和是否删除(0 增量 非0 删除),以及是否传入了DELDATE 进行对TDMDELDATE更新。
              如果ISDEL参数为非0,则一定需要填充DELDATE入参 
              如果三个字段均为空,则只是进行初始化。
      日  期:2012/12/04
      版  本:1.0.0
              1.0.1 MODIFY BY 20121205 ZZY->增加ISDEL入参
  *****************************************************************************/     
  PROCEDURE SP_DM_UPDATETDMDELDATE(TARGETTABLENAME IN VARCHAR2 DEFAULT '',
                                   ISDEL           IN CHAR DEFAULT '',
                                   DELDATE         IN INTEGER DEFAULT '');
  /*****************************************************************************


      名  称:FC_GETREDOSUBSQL
      功  能:1. 获取增量或重转的条件子句
              2. 如果非增量方式(重转方式),则进行更新TDMDELDATE表
              3. 如果参数设置中,重转方式是REDODATE方式,获取参数后,会将此参数置为无效。
      入  参:PARACODE1, PARACODE2 参数表参数编号,分别是 REDODATE和REDODAYS参数,顺序不可反
              TASKCODE 任务编号,任务参数编号所对应的TASKCODE
              TAGTABLENAME 目标表名称
      出  参:
      创建者:ZZY
      描  述:根据传入的各明细参数,获取行情表的交易日条件或是时间戳条件。
              根据不同情况,需要更新TDMDELDATE\TETLPARAMETER表              
      日  期:2012/12/04
      版  本:1.0.0
  *****************************************************************************/     
  FUNCTION FC_GETREDOSUBSQL(PARACODE1    IN INTEGER,
                            PARACODE2    IN INTEGER,
                            TASKCODE     IN VARCHAR2,
                            TAGTABLENAME IN VARCHAR2) RETURN VARCHAR2;
/******************************************************************************************/
PROCEDURE SP_DM_UPDATETDMDELDATE(TARGETTABLENAME IN VARCHAR2 DEFAULT '',
                                 ISDEL           IN CHAR DEFAULT '',
                                 DELDATE         IN INTEGER DEFAULT '') IS 
  PRAGMA AUTONOMOUS_TRANSACTION;
  PROCEDURE SP_DM_INITDMDELDATE IS 
    PRAGMA AUTONOMOUS_TRANSACTION;
    V_TMP INTEGER;
  BEGIN
    SELECT COUNT(*) INTO V_TMP FROM TDMDELDATE;     
    --tdmdeldate表数据初始化
    IF V_TMP = 0 THEN 
      INSERT INTO TDMDELDATE (VC_SRCTABLE_NAME, VC_TARTABLE_NAME, L_DEL_DATE, C_IS_DEL, D_UPDATETIME)
      VALUES ('CH_BHDQUOTE', 'DM_BSC_BONDQUOTE', 19000101, '0', SYSDATE);
      INSERT INTO TDMDELDATE (VC_SRCTABLE_NAME, VC_TARTABLE_NAME, L_DEL_DATE, C_IS_DEL, D_UPDATETIME)
      VALUES ('CH_CIHDQUOTE;CH_IBBONDINDEX', 'DM_BSC_INDEXQUOTE', 19000101, '0', SYSDATE);


      INSERT INTO TDMDELDATE (VC_SRCTABLE_NAME, VC_TARTABLE_NAME, L_DEL_DATE, C_IS_DEL, D_UPDATETIME)
      VALUES ('CH_FHDQUOTE', 'DM_BSC_FUNDQUOTE', 19000101, '0', SYSDATE);
      INSERT INTO TDMDELDATE (VC_SRCTABLE_NAME, VC_TARTABLE_NAME, L_DEL_DATE, C_IS_DEL, D_UPDATETIME)
      VALUES ('CH_CHDQUOTE', 'DM_BSC_EQUITYQUOTE', 19000101, '0', SYSDATE);
      INSERT INTO TDMDELDATE (VC_SRCTABLE_NAME, VC_TARTABLE_NAME, L_DEL_DATE, C_IS_DEL, D_UPDATETIME)
      VALUES ('CH_HKHDQUOTE', 'DM_BSC_HKEQUITYQUOTE', 19000101, '0', SYSDATE);
      INSERT INTO TDMDELDATE (VC_SRCTABLE_NAME, VC_TARTABLE_NAME, L_DEL_DATE, C_IS_DEL, D_UPDATETIME)
      VALUES ('CH_FQUOTE', 'DM_BSC_FUTUREQUOTE', 19000101, '0', SYSDATE);
      INSERT INTO TDMDELDATE (VC_SRCTABLE_NAME, VC_TARTABLE_NAME, L_DEL_DATE, C_IS_DEL, D_UPDATETIME)
      VALUES ('CH_NAV', 'DM_BSC_FUNDNAV', 19000101, '0', SYSDATE);
      INSERT INTO TDMDELDATE (VC_SRCTABLE_NAME, VC_TARTABLE_NAME, L_DEL_DATE, C_IS_DEL, D_UPDATETIME)
      VALUES ('CH_NAV_CUR', 'DM_BSC_CURRFUNDNAV', 19000101, '0', SYSDATE);
      INSERT INTO TDMDELDATE (VC_SRCTABLE_NAME, VC_TARTABLE_NAME, L_DEL_DATE, C_IS_DEL, D_UPDATETIME)
      VALUES ('CH_ISSWEIGHT', 'DM_BSC_INDEXCOMPWEIGHT', 19000101, '0', SYSDATE);
      INSERT INTO TDMDELDATE (VC_SRCTABLE_NAME, VC_TARTABLE_NAME, L_DEL_DATE, C_IS_DEL, D_UPDATETIME)
      VALUES ('CH_DERC_EQACHQUOTE_2', 'DM_BSC_DERCEQACHQUOTE', 19000101, '0', SYSDATE);
      INSERT INTO TDMDELDATE (VC_SRCTABLE_NAME, VC_TARTABLE_NAME, L_DEL_DATE, C_IS_DEL, D_UPDATETIME)
      VALUES ('CH_BESTIMATE', 'DM_BSC_BONDESTIMATE', 19000101, '0', SYSDATE);
      INSERT INTO TDMDELDATE (VC_SRCTABLE_NAME, VC_TARTABLE_NAME, L_DEL_DATE, C_IS_DEL, D_UPDATETIME)
      VALUES ('CH_BYIELDCURVE', 'DM_BSC_YIELDCURVE', 19000101, '0', SYSDATE);
      COMMIT;
    END IF;
  EXCEPTION
    WHEN OTHERS THEN
      RAISE;        
  END SP_DM_INITDMDELDATE;
BEGIN
  --初始化
  SP_DM_INITDMDELDATE;
  IF (TARGETTABLENAME IS NOT NULL) 
     AND (ISDEL IS NOT NULL)
     AND (DELDATE IS NOT NULL) THEN 
              
      IF ISDEL = '0' THEN 
        UPDATE TDMDELDATE
           SET C_IS_DEL = '0',


               D_UPDATETIME = SYSDATE
         WHERE UPPER(VC_TARTABLE_NAME) = UPPER(TARGETTABLENAME);
         COMMIT;
      ELSE
        UPDATE TDMDELDATE
           SET L_DEL_DATE = NVL(DELDATE,TO_NUMBER(TO_CHAR(SYSDATE,'YYYYMMDD'))),
               C_IS_DEL = '1',
               D_UPDATETIME = SYSDATE
         WHERE UPPER(VC_TARTABLE_NAME) = UPPER(TARGETTABLENAME);
         COMMIT;    
      END IF;
      
   END IF;
EXCEPTION  
  WHEN OTHERS THEN 
    RAISE;
END SP_DM_UPDATETDMDELDATE;  
/******************************************************************************************/
FUNCTION FC_GETREDOSUBSQL(PARACODE1    IN INTEGER,
                          PARACODE2    IN INTEGER,
                          TASKCODE     IN VARCHAR2,
                          TAGTABLENAME IN VARCHAR2) RETURN VARCHAR2 IS
  V_CONDITIONSQL VARCHAR2(100);
  PRAGMA AUTONOMOUS_TRANSACTION;
  V_REDODATE VARCHAR2(10);
  V_REDODAYS VARCHAR2(10);
  V_CURRDATE TODSRECORD.L_TRADE_DATE%TYPE;
  V_SRCTABLENAME TDMDELDATE.VC_SRCTABLE_NAME%TYPE;
  V_LOOPTIMES INTEGER;
  V_TMP VARCHAR2(30);
  V_TMPDATE1 INTEGER;
  V_TMPDATE2 INTEGER;
  
  PROCEDURE SP_INVALIDPARA(PARACODE IN INTEGER, TASKCODE IN VARCHAR2) IS
    PRAGMA AUTONOMOUS_TRANSACTION;             
  BEGIN
    UPDATE TETLPARAMETER
       SET C_STATUS = '0',
           D_UPDATE_TIME = SYSDATE,
           VC_UPDATE_OPER = 'MACHINE'
     WHERE L_PARA_CODE = PARACODE
       AND VC_TASK_CODE = TASKCODE;    
    COMMIT;
  END SP_INVALIDPARA;
  
BEGIN
  V_REDODATE := NULL;
  V_REDODAYS := NULL;
  V_REDODATE := PKG_PUB_PKGBASIS.FC_READTSYSPARAMETER(PARACODE1,'1',TASKCODE);
  IF V_REDODATE IS NOT NULL THEN 
    --使得REDODATE类型参数无效
    SP_INVALIDPARA(PARACODE1,TASKCODE);


    --初始化 且 更新TDMDELDATE表
    SP_DM_UPDATETDMDELDATE(TAGTABLENAME,'1',V_REDODATE);
  ELSE
    V_REDODAYS := PKG_PUB_PKGBASIS.FC_READTSYSPARAMETER(PARACODE2,'1',TASKCODE);    
    IF V_REDODAYS IS NOT NULL THEN
      --初始化 TDMDELDATE(主要是保证表中有数据) 
      SP_DM_UPDATETDMDELDATE;
      SELECT ';' 
[解决办法]
 TMP.VC_SRCTABLE_NAME
        INTO V_SRCTABLENAME
        FROM TDMDELDATE TMP
       WHERE UPPER(TMP.VC_TARTABLE_NAME) = UPPER(TAGTABLENAME);
       
        V_LOOPTIMES := LENGTH(V_SRCTABLENAME) -
                       LENGTH(REPLACE(V_SRCTABLENAME, ';', NULL));  
        V_TMPDATE1 := 0;
        V_TMPDATE2 := 0;    
        
        FOR I IN 1 .. V_LOOPTIMES LOOP
            V_TMP := SUBSTR(REGEXP_SUBSTR(V_SRCTABLENAME,
                                                ';[^;]+',
                                                1,
                                                I),
                                  2);
          --获取中间表更新最大交易日
          SELECT NVL(MAX(L_TRADE_DATE),0)
            INTO V_TMPDATE1
            FROM TODSRECORD
           WHERE L_SERIAL_NO = (SELECT NVL(MAX(L_SERIAL_NO), 0)
                                  FROM TODSRECORD A
                                 WHERE UPPER(A.VC_TABLE_NAME) = UPPER(V_TMP)
                                   AND A.VC_STATUS = '1');  


                                   
          SELECT GREATEST(V_TMPDATE1,V_TMPDATE2) INTO V_TMPDATE2 FROM DUAL;          
        END LOOP;
        
        SELECT TO_DATE(V_TMPDATE2, 'YYYYMMDD') - TO_NUMBER(V_REDODAYS)
          INTO V_REDODATE
          FROM DUAL;          
        SP_DM_UPDATETDMDELDATE(TAGTABLENAME,'1',V_REDODATE);        
    ELSE
      --增量更新
      SP_DM_UPDATETDMDELDATE(TAGTABLENAME,'1',V_REDODATE); 
      NULL;
    END IF;
  END IF;
EXCEPTION
  WHEN OTHERS THEN
    RAISE;  
END FC_GETREDOSUBSQL;       


[解决办法]
学习下 围观中【搜集优秀的代码段】
[解决办法]
楼主这代码一点规范都没有.
[解决办法]
【搜集优秀的代码段】

[解决办法]
正在形成中。。。【搜集优秀的代码段】
[解决办法]
学习下优秀代码 
[解决办法]
引用:
AS3代码,没什么亮点.. 贵在真实... 挣个分。
JavaScript code?12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576……

那堆case可以用个关联结构,一个循环。
[解决办法]
引用:
C/C++ code?12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929……


牛的,这段代码还挺有用的。
对于__t2我更喜欢用函数重载,而不是类特化。

函数重载可以有隐式转换,感觉适用范围更广一点。

[解决办法]
//初始化资源[为对象的使用提供必要的资源]
//[Ret]返回值[0 失败] [1 成功]
staticintSGuideTree_Init(SGuideTree *const pthis)
{
assert(pthis);
const char strFileName[] = "InputMethod.yql";
pthis->Unit(pthis);
//
SFileFile = {0};
unsigned char m_Data;
File.New = SFile_New_Test;
File.New(&File);
//
//最短路径求值,如果操作都是成功,则值为false,括号内处理跳过
//[如果文件对象申请资源失败][申请独立数据块内存失败][申请共享数据块内存失败] 则释放已申请资源并返回失败
if ( (0 == File.Init(&File, (char*)strFileName, sizeof(strFileName))) 

[解决办法]
 (NULL == (pthis->v_par = malloc(sizeof(Par_GuideTree)) ) ) 



[解决办法]
 (NULL == (pPar_GuideTree(pthis->v_par)->pShare = (pPar_GuideTree_Share)malloc(sizeof(Par_GuideTree_Share))) ))
{
pthis->Unit(pthis);
File.Delete(&File);
return0;
}
//对申请的资源进行初始化
pPar_GuideTree_Share pShare = pPar_GuideTree(pthis->v_par)->pShare;
pShare->m_Count = 1;//pthis对象引用[本身]
memset(&(pShare->m_HeadNode), 0, sizeof(Par_GuideTree_NodeData)); 
pPar_GuideTree(pthis->v_par)->pVernierNode = &(pShare->m_HeadNode);//游标节点移到头结点
//
int mState = Enum_GuideTree_State_Err;
unsigned char szCode[2];
intIsRight = S_OK;
//读取数据并使用数据创建节点树
File.SRead.At(&File, 0);
while(1 == File.SRead.Read(&File, m_Data)){

//处理得到的数据
switch(m_Data){

//创建孩子节点[创建成功、节点移到孩子节点]
case Enum_GuideTree_OrderCode_CreateChild:
{
assert(Enum_GuideTree_State_Err == mState);//状态机不为空,说明没有操作完
//
IsRight = S_FAIL;
if ((Enum_GuideTree_State_Err == mState) && (1 == pthis->SIterator.CreateChild(pthis)))
{
mState = Enum_GuideTree_State_ReadKey;
IsRight = S_OK;
}
}
break;

//创建兄弟节点[创建成功、节点移到兄弟节点]
case  Enum_GuideTree_OrderCode_CreateBrother:
{
assert(Enum_GuideTree_State_Err == mState);
//
IsRight = S_FAIL;
if ((Enum_GuideTree_State_Err == mState) && (1 == pthis->SIterator.CreateBrother(pthis)))
{
mState = Enum_GuideTree_State_ReadKey;
IsRight = S_OK;
}
}
break;

//添加数据[添加的数据追加到末尾]
case Enum_GuideTree_OrderCode_AddListCode:
{
assert(Enum_GuideTree_State_Err == mState);
//
IsRight = S_FAIL;
if (Enum_GuideTree_State_Err == mState) 
{
//DefaultStateFun设置为添加数据状态
mState = Enum_GuideTree_State_ReadCodeLow;
IsRight = S_OK;
}
}
break;

//移到孩子节点
case Enum_GuideTree_OrderCode_MoveChild:
{
pthis->SIterator.MoveChild(pthis);
}
break;

//移到下一个兄弟节点
case Enum_GuideTree_OrderCode_MoveBrother:
{
pthis->SIterator.MoveBrother(pthis);
}
break;

//移动到双亲结点
case Enum_GuideTree_OrderCode_MoveParent:
{
pthis->SIterator.MoveParent(pthis);
}
break;

//移动到头结点
case Enum_GuideTree_OrderCode_MoveHead:
{
pthis->SIterator.MoveHead(pthis);
}
break;

//状态机处理
default:
{
IsRight = S_FAIL;
if (Enum_GuideTree_State_Err != mState)
{
switch(mState){
case Enum_GuideTree_State_ReadKey:
if (1 == DefaultStateFun_ReadKey(pPar_GuideTree(pthis->v_par)->pVernierNode, m_Data))
{
IsRight = S_OK;
mState = Enum_GuideTree_State_Err;
}
break;

case Enum_GuideTree_State_ReadCodeLow:
{
IsRight = S_OK;
mState = Enum_GuideTree_State_ReadCodeHig;
szCode[0] = m_Data;
}
break;

case Enum_GuideTree_State_ReadCodeHig:


szCode[1] = m_Data;
if (1 == DefaultStateFun_ReadCode(pPar_GuideTree(pthis->v_par)->pVernierNode, szCode))
{
IsRight = S_OK;
mState = Enum_GuideTree_State_Err;
}
break;

default:
assert(0);//未知的状态
break;
}
}
}
break;
}

//出错处理
if (S_FAIL == IsRight)
{
pthis->Unit(pthis);
File.Delete(&File);
return 0;
}
}
//
assert(Enum_GuideTree_State_Err == mState);
File.Delete(&File);
return1;
}
[解决办法]
还木有风格,慢慢修炼 
[解决办法]
学习,最近越来越意识到代码规范的重要性
[解决办法]
学习,很多优秀的代码。
[解决办法]
【搜集优秀的代码段】我怎么看不懂
[解决办法]


[解决办法]
个人采用匈牙利命名方法,就不贴代码了 - -
[解决办法]


/*①②③┏┓┗┛┣┫┿╂╋○→↓┼─│
 *-->注解:
 *-->LinePoint位置和Index关系(顺时针):
 *               │
 *               │
 *       ┏───○───┓
 *       │      │      │
 * ───③───╋───①───→X+
 *       │      │      │
 *       ┗───②───┛
 *               │
 *               ↓Y+
 *-->AnglePoint位置和Index关系(顺时针): 
 *               │
 *               │
 *       ○───┿───①
 *       │      │      │
 * ───╂───╋───╂──→X+
 *       │      │      │
 *       ③───┿───②
 *               │
 *               ↓Y+
 *               
 *-->iWhichPath边的序号(顺时针): 
 *               │


 *               │
 *       ┏───①───┓
 *       │      │      │
 * ───④───╋───②───→X+
 *       │      │      │
 *       ┗───③───┛
 *               │
 *               ↓Y+
 */


[解决办法]
【搜集优秀的代码段】
[解决办法]
【搜集优秀的代码段】
[解决办法]

[解决办法]

[解决办法]
引用:
看到以下划线开头的变量或者函数就恶心。
下划线开头的变量一般都是留给编译器使用的, 那天你的变量或者函数和编译器库中的同名你就杯具了。
Up
[解决办法]
/************************************************************
* Author: Jeffery Jiang
* Data: 2012/10/17
* Description: Encode pcm audio data to audio file,
such as wav,mp3.
*************************************************************/

#ifndef _AUDIO_ENCODER_H_
#define _AUDIO_ENCODER_H_



typedef void (* TEncoderWriteCallback) (void *data,unsigned int dataSize,void *userData);

class AudioEncoder
{
public:
// Initialize encoder,call this function before you use encoder.
virtual int initialize(
unsigned int nSampleRate,
unsigned int nNumberOfChannels,
unsigned int nBitPerSample,
unsigned int nBitrate,
unsigned int customValue,
TEncoderWriteCallback  tWriteCallback
)=0;
// PARAMETERS:
//            nSampleRate: the target mp3 file's sample rate.
//            nNumberOfChannels: the number of channels of the target mp3 file.
//            nBitPerSample: the target mp3 file's bit per sample.(16)
//            nBitrate: the target mp3 file's bitrate.
//            customValue: the vlaue you can pass in.Then used in callback function.
//            tWriteCallback: function pointer.
// RETURN VALUES:
//            1   -- all ok.
//            0   -- error.



// Send wave samples for encoding.
virtual int encode_samples(void *pSamples,unsigned int nNumberOfSamples)=0;
// PARAMETERS:
//            pSamples: pcm data pointer.
//            nNumberOfSamples: the size of pcm data.
// RETURN VALUES:
//            1   -- all ok.
//            0   -- error.



// uninitialize encoder,when you donnot need encoder anymore.
virtual int uninitialize()=0;
// PARAMETERS:
//            None.
// RETURN VALUES:
//            1   -- all ok.
//            0   -- error.


};

AudioEncoder* create_mp3_encoder();
AudioEncoder* create_wav_encoder();

#endif

热点排行