UfnCod3r
یک شنبه 24 آذر 1392, 11:08 صبح
شاید برای خیلی ها سرعت کامپایل اهمیتی نداشته باشه .:لبخندساده:
ولی زمانی که بخواین ی چیز درست حسابی بنویسید دیگه انقدری کد هست که هردفعه کامپایل کردنش
عذابتون بده .:عصبانی++:
- سسیتم رو ارتقا بدین:تشویق:
- از کامپایلر های بروز استفاده کنید:تشویق:
از GCC, MSVC استفاده کنید. هرچی نسخه جدیدتر بهتر
اونایی که از توربو سی و امثالش استفاده می کنن هین الان با برنامه نویسی خداحافظی کنند.
- تا اونجا که می تونید از پیش پردازنده ها استفاده نکنید:تشویق:
برای اعداد و ... ثابت از عوض استفاده از define# از متغیر static ,const استفاده کنید.
#define PI 3.141592
//////////////////////////////
const float PI = 3.141592;
اینطوری از Static Linkage استفاده میشه و روند کامپایل و بهینه سازی هم سریع تر انجام میشه.
عوض توابع پیشپردازنده ای از توابع inline استفاده کنید
#define max(a, b) a > b ? a : b
///////////////////////////////////////////
inline int max(int a, int b) { return a > b ? a : b; }
template <typename T> T max(T a, T b){ return a > b ? a : b; }
فقط سرفایل هایی که لازم هست رو اینکلود کنید :تشویق:
تا جایی که می توانید از Forward Declaration استفاده کنید تا نیازی به اینکلود نباشه.:تشویق:
در سرفایل ها (h.) فقط تعریف ها رو بنویسد و کدهای اصلی رو در فایل منبع (cpp.):تشویق:
-از یک فضای نام استفاده کنید. :تشویق:
مسلما" برنامه یا کتاب خانه شما ی اسمی داره. عوض طولانی کردن نام کلاس یا توابع و .. از فضای نام استفاده کنید.
class P3DVector {};
class P3DMatix{};
class P3DCanvas
{
P3DMatrix a, b, c;
P3DVector size, penPos;
};
void Paint3DMatrixMul(P3DMatrix& a, P3DMatrix& b, P3DMatrix& out);
////////////////////////////////////////////////////////////////////
namespace P3D
{
class Matrix {};
class Vector {};
class Canvas
{
Matrix a, b, c;
Vector size, penPos;
};
void MatrixMul(Matrix& a, Matrix& b, Matrix& out);
};
وقتی در فضای نام هستید توابع گلوبال رو با :: صدا بزنید.:تشویق:
اینطوری هم مفهوم کد ها کمی بالاتر میره هم کامپایلر می دونه که داخل این فضای نام رو نگرده .
void P3DMyFunc(int a)
{
pintf("myFunc %d", a);
//...
};
//////////////////////////////////////
namespace P3D
{
void MyFunc(int a)
{
::pintf("myFunc %d", a);
//...
}
};
استفاده از pragme one# عوض
ifndef xxxx#
define xxxx#
endiF#
برای یک بار اینکلود شدن هدر ها.:تشویق:
البته این pragme one# فقط در VC موجوده .:شیطان:
شاید چیزای دیگه هم باشه که من نمی دونم و شما می دونید
فعلا خدافظ:چشمک::بوس:
ولی زمانی که بخواین ی چیز درست حسابی بنویسید دیگه انقدری کد هست که هردفعه کامپایل کردنش
عذابتون بده .:عصبانی++:
- سسیتم رو ارتقا بدین:تشویق:
- از کامپایلر های بروز استفاده کنید:تشویق:
از GCC, MSVC استفاده کنید. هرچی نسخه جدیدتر بهتر
اونایی که از توربو سی و امثالش استفاده می کنن هین الان با برنامه نویسی خداحافظی کنند.
- تا اونجا که می تونید از پیش پردازنده ها استفاده نکنید:تشویق:
برای اعداد و ... ثابت از عوض استفاده از define# از متغیر static ,const استفاده کنید.
#define PI 3.141592
//////////////////////////////
const float PI = 3.141592;
اینطوری از Static Linkage استفاده میشه و روند کامپایل و بهینه سازی هم سریع تر انجام میشه.
عوض توابع پیشپردازنده ای از توابع inline استفاده کنید
#define max(a, b) a > b ? a : b
///////////////////////////////////////////
inline int max(int a, int b) { return a > b ? a : b; }
template <typename T> T max(T a, T b){ return a > b ? a : b; }
فقط سرفایل هایی که لازم هست رو اینکلود کنید :تشویق:
تا جایی که می توانید از Forward Declaration استفاده کنید تا نیازی به اینکلود نباشه.:تشویق:
در سرفایل ها (h.) فقط تعریف ها رو بنویسد و کدهای اصلی رو در فایل منبع (cpp.):تشویق:
-از یک فضای نام استفاده کنید. :تشویق:
مسلما" برنامه یا کتاب خانه شما ی اسمی داره. عوض طولانی کردن نام کلاس یا توابع و .. از فضای نام استفاده کنید.
class P3DVector {};
class P3DMatix{};
class P3DCanvas
{
P3DMatrix a, b, c;
P3DVector size, penPos;
};
void Paint3DMatrixMul(P3DMatrix& a, P3DMatrix& b, P3DMatrix& out);
////////////////////////////////////////////////////////////////////
namespace P3D
{
class Matrix {};
class Vector {};
class Canvas
{
Matrix a, b, c;
Vector size, penPos;
};
void MatrixMul(Matrix& a, Matrix& b, Matrix& out);
};
وقتی در فضای نام هستید توابع گلوبال رو با :: صدا بزنید.:تشویق:
اینطوری هم مفهوم کد ها کمی بالاتر میره هم کامپایلر می دونه که داخل این فضای نام رو نگرده .
void P3DMyFunc(int a)
{
pintf("myFunc %d", a);
//...
};
//////////////////////////////////////
namespace P3D
{
void MyFunc(int a)
{
::pintf("myFunc %d", a);
//...
}
};
استفاده از pragme one# عوض
ifndef xxxx#
define xxxx#
endiF#
برای یک بار اینکلود شدن هدر ها.:تشویق:
البته این pragme one# فقط در VC موجوده .:شیطان:
شاید چیزای دیگه هم باشه که من نمی دونم و شما می دونید
فعلا خدافظ:چشمک::بوس: