ðÒÉ×ÅÔ Dimmy!
ñ ÎÅÍÎÏÇÏ Ô×ÏÉ ÁÂÚÁÃÙ ÐÅÒÅÓÔÁ×ÉÌ ÍÅÓÔÁÍÉ ÄÁÂÙ Ä×ÁÖÄÙ ÎÅ ÏÔ×ÅÞÁÔØ ÏÄÉÎÁËÏ×Ï.
16 Oct 05 06:46, Dimmy Timchenko ÐÉÓÁÌ Alex Mogilnikov:
AM>> ëÁË ÔÕÔ ÕÖÅ ÇÏ×ÏÒÉÌÉ, ÜÔÏ ÍÏÖÎÏ É × C.
DT> úÁ ÉÓËÌÀÞÅÎÉÅÍ ÐÁÒÁÍÅÔÒÁ ÃÉËÌÁ. ðÒÉģÔÓÑ ÏËÒÕÖÁÔØ for ÓËÏÂËÁÍÉ É DT> ÏÂßÑ×ÌÑÔØ ÐÁÒÁÍÅÔÒ ÐÅÒÅÄ ÏÐÅÒÁÔÏÒÏÍ, ÞÔÏ ÚÁÈÌÁÍÌÑÅÔ ÔÅËÓÔ É ÓÎÉÖÁÅÔ DT> ÞÉÔÁÅÍÏÓÔØ.
HÅÐÒÁ×ÄÁ.
======== test.c ============ void bar(int);
void foo(void) { bar(999);
for(int i = 0; i < 10; i++) bar(i);
int i = 555; bar(i); } ============================
úÄÅÓØ ×ÓÅ ÓÉÎÔÁËÓÉÞÅÓËÉ ËÏÒÒÅËÔÎÏ É ÎÅÔ ÎÉËÁËÉÈ ÌÉÛÎÉÈ ÓËÏÂÏË.
AM>> þÔÏ ÔÁËÏÅ with Ñ ÎÅ ÚÎÁÀ,
DT> á! úÒÑ ÎÅ ÚÎÁÅÛØ. :) üÔÏ ÚÁÄÁÎÉÅ ËÏÎÔÅËÓÔÁ ÐÒÉ ÉÓÐÏÌØÚÏ×ÁÎÉÉ DT> ÓÔÒÕËÔÕÒ (× ÐÁÓËÁÌÅ ÏÎÉ ÎÁÚÙ×ÁÀÔÓÑ records):
DT> for i := 1 to NFREQ do _with acc_table[i] do_ begin DT> Q0 := Q1 * coeff - Q2 + sample; DT> Q2 := Q1; DT> Q1 := Q0; DT> end;
ôÏ ÅÓÔØ ËÏÍÐÉÌÑÔÏÒ ×ÎÕÔÒÉ width ÒÁÓÛÉÒÑÅÔ Q0 ÄÏ acc_table[i].Q0 (ÎÅ ÐÏÍÎÀ ÔÏÞÎÏ ÓÉÎÔÁËÓÉÓ ðÁÓËÁÌÑ)? äÁ, ÜÔÏÍÕ ÁÎÁÌÏÇÁ ÎÅÔ.
AM>> Á ÏÓÔÁÌØÎÏÅ ÍÏÖÎÏ × C++.
DT> íÏÖÎÏ, ÎÏ ÏÎÏ ÎÅ ÉÎÔÅÇÒÉÒÏ×ÁÎÏ × ÑÚÙË.
á ÐÒÏÇÒÁÍÍÉÓÔÕ ÎÅ ×ÓÅ ÌÉ ÒÁ×ÎÏ? üÔÏ ÄÁÖÅ ÈÏÒÏÛÏ! :) ÷ÓÅ ÉÎÔÅÇÒÉÒÏ×ÁÔØ × ÑÚÙË ×ÓÅ ÒÁ×ÎÏ ÎÅÌØÚÑ, ÉÎÁÞÅ ÎÁ ÉÚÕÞÅÎÉÅ ÔÁËÏÇÏ ÑÚÙËÁ ÐÏÔÒÅÂÕÅÔÓÑ ×ÅÞÎÏÓÔØ. á ÔÁË ÐÒÏÇÒÁÍÍÉÓÔ ÉÍÅÅÔ ×ÏÚÍÏÖÎÏÓÔØ ÓÁÍ ÓÄÅÌÁÔØ ÞÔÏ ÎÕÖÎÏ, É ÉÍÅÎÎÏ ÔÁË, ËÁË ÎÕÖÎÏ.
AM>> äÁ, C ÐÏÚ×ÏÌÑÅÔ ÐÉÓÁÔØ ÎÅ×ÎÑÔÎÏ. HÏ ÍÏÖÎÏ ÜÔÏÊ ×ÏÚÍÏÖÎÏÓÔØÀ ÎÅ AM>> ÐÏÌØÚÏ×ÁÔØÓÑ.
DT> ðÏÐÒÏÂÕÊ ×ÎÑÔÎÏ ÎÁÐÉÓÁÔØ ÄÅËÌÁÒÁÃÉÀ/ÄÅÆÉÎÉÃÉÀ ÞÅÇÏ-ÎÉÂÕÄØ, ÓÏÄÅÒÖÁÝÅÇÏ DT> ÕËÁÚÁÔÅÌÉ. äÌÑ ÜÔÏÇÏ ÄÁÖÅ ÓÐÅÃÉÁÌØÎÙÅ ÐÒÏÇÒÁÍÍÙ ÐÒÉÄÕÍÁÌÉ, cdecl É DT> cundecl. :)
HÅ ÐÏÌØÚÕÀÓØ ÉÍÉ. á ÄÌÑ ÔÏÇÏ ÞÔÏÂÙ ÄÅËÌÁÒÁÃÉÉ ÂÙÌÉ ×ÎÑÔÎÙÍÉ, ÐÒÏÓÔÏ ÎÅ ÎÁÄÏ ÐÙÔÁÔØÓÑ ÚÁÐÉÈÎÕÔØ ÓÌÏÖÎÕÀ ÍÎÏÇÏÜÔÁÖÎÕÀ ÄÅËÌÁÒÁÃÉÀ × ÏÄÎÏ ×ÙÒÁÖÅÎÉÅ. åÓÔØ ÚÁÍÅÞÁÔÅÌØÎÁÑ ÛÔÕËÁ - typedef, ËÏÔÏÒÁÑ ÐÏÚ×ÏÌÑÅÔ ÄÁ×ÁÔØ ÔÉÐÁÍ ÏÓÍÙÓÌÅÎÎÙÅ ÉÍÅÎÁ É ÄÅÌÁÔØ ÄÅËÌÁÒÁÃÉÉ ×ÎÑÔÎÙÍÉ É ÐÒÏÚÒÁÞÎÙÍÉ. óÒÁ×ÎÉ Ä×Á ×ÁÒÉÁÎÔÁ:
======================= void *(*a[10])(char *); ======================= typedef void * TFunction(char *);
typedef TFunction * TFunctionPtr;
TFunctionPtr a[10]; =======================
DT> é C++ ÜÔÕ ÔÒÁÄÉÃÉÀ ÐÒÏÄÏÌÖÉÌ, ÎÁÐÒÉÍÅÒ, × ÓÉÎÔÁËÓÉÓÅ ÔÅÍÐÌÅÊÔÏ×.
áÎÁÌÏÇÉÞÎÏ: ======================= std::map<std::basic_string<TMyChar>, std::list<std::set<TMyType> > >::iterator i; ======================= typedef std::set<TMyType> TMySet;
typedef std::list<TMySet> TListOfSet;
typedef std::basic_string<TMyChar> TMyString;
typedef std::map<TMyString, TListOfSet> TMyMap;
typedef TMyMap::iterator TMyIterator;
TMyIterator i; =======================
AM>> ôÁË C ÎÅ ÚÁÐÒÅÝÁÅÔ ÔÅÂÅ ÜÔÏÇÏ ÄÅÌÁÔØ. ðÉÛÉ
AM>> short s = (short)0; AM>> long l = (long)s;
DT> HÕ ÚÄÒÁÓÔÉ. á × ×ÙÒÁÖÅÎÉÑÈ?
AM>> ÷Ï-×ÔÏÒÙÈ, ÎÅ ÐÏÎÉÍÁÀ, ÞÅÍ ÜÔÏ ÌÕÞÛÅ ÞÅÍ short s = 0;.
DT> HÕ Á ÐÒÏÔÉ× ÜÔÏÇÏ Ñ É ÎÅ ×ÏÚÒÁÖÁÌ. ëÏÎÓÔÁÎÔÁ É ÅÓÔØ ËÏÎÓÔÁÎÔÁ, É DT> ÌÀÂÙÅ ÓÔÁÔÉÞÅÓËÉÅ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÑ ÔÉÐÏ× ÎÅ ÍÅÛÁÀÔ.
ôÏ ÅÓÔØ ÔÙ ÕÖÅ ÎÅ ÐÒÏÔÉ×
_ÌÀÂÏÇÏ_ Á×ÔÏÍÁÔÉÞÅÓËÏÇÏ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÑ ÔÉÐÏ×, Á ÐÒÏÔÉ× ÎÅÇÏ ÌÉÛØ × ËÁËÉÈ-ÔÏ ÏÔÄÅÌØÎÙÈ ÓÌÕÞÁÑÈ? :) ÷ ËÁËÉÈ? ðÒÉ×ÅÄÉ ÖÅ ÐÒÉÍÅÒ, ÒÁÚÇÏ×ÏÒ ÓÔÁÎÅÔ ÐÒÅÄÍÅÔÎÙÍ...
DT> ëÏÇÄÁ Ñ ÎÁ ×ÏÓØÍÉÂÉÔÏ×ÏÍ ËÒÉÓÔÁÌÌÅ ÈÏÞÕ DT> ÓÌÏÖÉÔØ Ä×Á ÂÁÊÔÁ, ËÁË ÍÎÅ ÜÔÏ ÓÄÅÌÁÔØ ÂÅÚ ÐÒÏÍÅÖÕÔÏÞÎÏÇÏ DT> ÐÒÅÏÂÒÁÚÏ×ÁÎÉÑ × int?
byte f(byte a, byte b) { return a + b; }
ôÁË ×ÓÅ-ÔÁËÉ, Ñ ÐÒÁ×ÉÌØÎÏ ÐÏÎÑÌ, ÞÔÏ ÔÅÂÅ ÈÏÞÅÔÓÑ, ÞÔÏÂÙ ÐÒÉ ×ÙÚÏ×Å f(100,
200) ×ÏÚ×ÒÁÝÁÅÍÏÅ ÚÎÁÞÅÎÉÅ ÂÙÌÏ ÎÅÏÐÒÅÄÅÌÅÎÏ? åÓÌÉ ÄÁ, ÔÏ C++ ÐÏÚ×ÏÌÑÅÔ ÏÐÒÅÄÅÌÉÔØ ÔÉÐ TMy8bitByte É ÏÐÅÒÁÔÏÒÙ ÄÌÑ ÒÁÂÏÔÙ Ó ÎÉÍ.
AM>> ôÏÌØËÏ ×Ï-ÐÅÒ×ÙÈ, ÞÅÍ ÂÏÌØÛÅ ÐÉÓÁÎÉÎÙ - ÔÅÍ ÂÏÌØÛÅ ×ÏÚÍÏÖÎÏÓÔÅÊ AM>> ÓÄÅÌÁÔØ ÏÛÉÂËÕ.
DT> ôÉÐÉÞÎÏÅ ÚÁÂÌÕÖÄÅÎÉÅ ÓÉÏÎÉÓÔÏ×. ;) þÅÍ ÂÏÌØÛÅ ÐÉÓÁÎÉÎÙ - ÔÅÍ ÂÏÌØÛÅ DT> ×ÏÚÍÏÖÎÏÓÔÅÊ Õ ËÏÍÐÉÌÑÔÏÒÁ _ÏÔÌÏ×ÉÔØ_ ÏÛÉÂËÕ.
short s = (short)0;
ëÁËÏÇÏ ÒÏÄÁ ÏÛÉÂËÉ (ËÒÏÍÅ ÏÐÅÞÁÔÏË, ËÏÇÄÁ ×ÍÅÓÔÏ short ËÏÄÅÒ ÎÁÐÉÛÅÔ shirt) ÍÏÖÅÔ ÏÔÌÏ×ÉÔØ × ÄÁÎÎÏÍ ÓÌÕÞÁÅ ËÏÍÐÉÌÑÔÏÒ?
DT> ñÚÙË ÏÂÑÚÁÎ ÂÙÔØ DT> ÉÚÂÙÔÏÞÎÙÍ, É ÒÁÚÎÁÑ ÓÅÍÁÎÔÉËÁ ÏÂÑÚÁÎÁ ×ÙÒÁÖÁÔØÓÑ ÒÁÚÎÙÍÉ, ÎÅÐÏÈÏÖÉÍÉ DT> ÓÉÎÔÁËÓÉÞÅÓËÉÍÉ ËÏÎÓÔÒÕËÃÉÑÍÉ. ÷ ÞÁÓÔÎÏÓÔÉ, ËÌÀÞÅ×ÏÅ ÓÌÏ×Ï ÌÕÞÛÅ DT> ÓÐÅÃÓÉÍ×ÏÌÁ: É ÐÏÔÏÍÕ ÞÔÏ ÉÚÂÙÔÏÞÎÏ, É ÐÏÔÏÍÕ ÞÔÏ ÌÕÞÛÅ ÞÉÔÁÅÔÓÑ.
ïÂÏÓÎÕÊ. þÅÍ ÂïÌØÛÁÑ ÉÚÂÙÔÏÞÎÏÓÔØ ÌÕÞÛÅ ÍåÎØÛÅÊ? ôÁË ×ÅÄØ ÍÏÖÎÏ ÄÏÊÔÉ ÄÏ Ä×ÏÊÎÏÇÏ ÕËÁÚÁÎÉÑ ÐÅÒÅÍÅÎÎÏÊ : res:res = var1:var1 + var2:var2; ÉÚ ÔÏÇÏ ÓÏÏÂÒÁÖÅÎÉÑ, ÞÔÏ ÅÓÌÉ Ä×Á ÎÁÂÒÁÎÎÙÈ ÉÍÅÎÉ ÎÅ ÓÏ×ÐÁÄÁÀÔ, ÔÉÐÁ sin(var1:var2), ÔÏ ÜÔÏ ÏÛÉÂËÁ. á ÅÓÌÉ ÕÖ Ñ ÎÁÂÒÁÌ sin(var2:var2), ÔÏ ×ÒÑÄ ÌÉ ÍÏÖÎÏ ÓÏÍÎÅ×ÁÔØÓÑ, ÞÔÏ ÉÍÅÎÎÏ ÏÔ ÐÅÒÅÍÅÎÎÏÊ var2 Ñ ÈÏÔÅÌ ×ÚÑÔØ ÓÉÎÕÓ. áÈ ÄÁ, ÌÕÞÛÅ ÐÉÓÁÔØ sin:sin, ÞÔÏÂÙ ÎÅ ÂÙÌÏ ÓÏÍÎÅÎÉÊ, ÞÔÏ ×ÚÑÔØ Ñ ÈÏÞÕ ÉÍÅÎÎÏ ÓÉÎÕÓ, Á ÎÅ ËÏÓÉÎÕÓ. :) HÁÄÏ ÖÅ, ÎÁ×ÅÒÎÏÅ, ×ÙÂÉÒÁÔØ ËÁËÏÊ-ÔÏ ÂÁÌÁÎÓ ÍÅÖÄÕ ×ÏÚÍÏÖÎÏÓÔØÀ ÏÔÌÏ×Á ÏÛÉÂÏË ÔÒÁÎÓÌÑÔÏÒÏÍ É ÃÅÎÏÊ, ËÏÔÏÒÕÀ ÚÁ ÜÔÏ ÂÕÄÅÔ ÐÌÁÔÉÔØ ËÏÄÅÒ. éÎÁÞÅ ÔÁËÉÍ "ÏÛÉÂËÏÕÓÔÏÊÞÉ×ÙÍ" ÑÚÙËÏÍ ÎÉËÔÏ ÎÅ ÓÔÁÎÅÔ ÐÏÌØÚÏ×ÁÔØÓÑ.
åÝÅ ÜÔÏ ÚÁ×ÉÓÉÔ É ÏÔ ÕÒÏ×ÎÑ ËÏÄÅÒÁ. HÁÞÉÎÁÀÝÉÊ ÉÚÕÞÁÔØ ÐÒÏÇÒÁÍÍÉÒÏ×ÁÎÉÅ ÄÅÌÁÅÔ ÏÄÎÉ ÏÛÉÂËÉ, ÐÒÏÆÅÓÓÉÏÎÁÌ - ÄÒÕÇÉÅ. åÓÌÉ ÎÁÞÉÎÁÀÝÉÊ ÐÒÉÓ×ÁÉ×ÁÅÔ ÚÎÁÞÅÎÉÅ ÏÄÎÏÇÏ ÔÉÐÁ ÐÅÒÅÍÅÎÎÏÊ ÄÒÕÇÏÇÏ ÔÉÐÁ, ÌÏÇÉÞÎÏ ÐÒÅÄÐÏÌÏÖÉÔØ, ÞÔÏ ÏÎ ÄÅÌÁÅÔ ÏÛÉÂËÕ, Á ÎÁ ÔÏÔ ÉÓËÌÀÞÉÔÅÌØÎÙÊ ÓÌÕÞÁÊ, ËÏÇÄÁ ÅÍÕ ÜÔÏ ÄÅÊÓÔ×ÉÔÅÌØÎÏ ÎÁÄÏ, ÔÒÅÂÏ×ÁÔØ ÐÉÓÁÔØ ÏÐÅÒÁÔÏÒ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÑ ÔÉÐÁ. ðÒÏÆÅÓÓÉÏÎÁÌ ÓËÁÖÅÔ: "ëÁËÏÇÏ ÞÅÒÔÁ? åÓÌÉ Ñ ÎÁÐÉÓÁÌ ÐÒÉÓ×ÁÉ×ÁÎÉÅ, ÚÎÁÞÉÔ ÍÎÅ ÄÅÊÓÔ×ÉÔÅÌØÎÏ ÜÔÏ ÎÕÖÎÏ. é ÎÅÚÁÞÅÍ ÍÎÅ ÔÕÔ ÓÏÐÌÉ ÐÏÄÔÉÒÁÔØ". äÌÑ ÎÅÇÏ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÅ ÔÉÐÁ × ÜÔÏÍ ×ÙÒÁÖÅÎÉÉ ÓÁÍÏ ÓÏÂÏÊ ÒÁÚÕÍÅÅÔÓÑ.
é ÍÏÅ ÍÎÅÎÉÅ ÐÏ ÐÏ×ÏÄÕ ÌÕÞÛÅÊ ÞÉÔÁÅÍÏÓÔÉ - '{' ÎÁÐÒÉÍÅÒ ÌÕÞÛÅ ÞÅÍ 'begin', ÔÁË ËÁË ×ÉÚÕÁÌØÎÏ ÓÉÌØÎÅÅ ÏÔÌÉÞÁÅÔÓÑ ÏÔ ÄÒÕÇÉÈ ÌÅËÓÅÍ - ÔÁËÉÈ ËÁË ÉÍÅÎÁ ÔÉÐÏ× É ÏÂßÅËÔÏ× (×ÏÔ ÔÅÂÅ É ÎÅÐÏÈÏÖÅÓÔØ ÓÉÎÔÁËÓÉÞÅÓËÉÈ ÜÌÅÍÅÎÔÏ×). HÏ ÄÁÖÅ ÅÓÌÉ ÔÙ ÄÒÕÇÏÇÏ ÍÎÅÎÉÑ, ÑÚÙË ÎÅ ÚÁÐÒÅÝÁÅÔ ÔÅÂÅ ÏÂßÑ×ÉÔØ Ä×Á ÍÁËÒÏÓÁ:
#define begin { #define end }
:)
ëÓÔÁÔÉ, ÎÅ ÐÒÏÔÉ×ÏÒÅÞÉÔ ÌÉ Ô×ÏÅ ÖÅÌÁÎÉÅ ÉÍÅÔØ ÏÐÅÒÁÔÏÒ with ÎÅÏÂÈÏÄÉÍÏÓÔÉ ÑÚÙËÁ ÂÙÔØ ÉÚÂÙÔÏÞÎÙÍ? íÎÅ ËÁÖÅÔÓÑ, ÔÁËÏÊ ÏÐÅÒÁÔÏÒ ÍÏÖÅÔ ÐÏÍÅÛÁÔØ ËÏÍÐÉÌÑÔÏÒÕ ÏÔÌÏ×ÉÔØ ÎÅËÏÔÏÒÙÅ ÏÛÉÂËÉ. :)
ñ, × Ó×ÏÀ ÏÞÅÒÅÄØ, ÄÏÌÖÅÎ ÕÔÏÞÎÉÔØ: ÐÏÄ "ÂÏÌØÛÅ ÐÉÓÁÎÉÎÙ" Ñ ÉÍÅÌ × ×ÉÄÕ ÂÏÌØÛÅÅ ËÏÌÉÞÅÓÔ×Ï ÌÅËÓÅÍ × ÏÄÎÏÍ ×ÙÒÁÖÅÎÉÉ. üËÏÎÏÍÉÔØ ËÁÖÄÙÊ ÓÉÍ×ÏÌ Ñ ÎÉ × ËÏÅÊ ÍÅÒÅ ÎÅ ÐÒÉÚÉ×ÁÀ.
DT> ëÓÔÁÔÉ, ÅÓÌÉ ÐÏÄËÉÎÅÛØ ÓÓÙÌËÉ ÎÁ ÐÏÌÅÚÎÙÅ ÄÌÑ embedded ÂÉÂÌÉÏÔÅËÉ, DT> ÂÕÄÕ ÏÞÅÎØ ÂÌÁÇÏÄÁÒÅÎ.
éÍÅÎÎÏ ÄÌÑ embedded -
formatting link
á ÔÁË ×-ÏÓÎÏ×ÎÏÍ ÓÁÍÏÐÉÓÎÙÅ ÂÉÂÌÉÏÔÅËÉ ÉÓÐÏÌØÚÕÀ.
÷ÓÅÇÏ ÎÁÉÌÕÞÛÅÇÏ, [Team PCAD 2000] áÌÅËÓÅÊ í. ... HÅ ÍÅÓÔÏ ÐÏÒÔÉÔ ÞÅÌÏ×ÅËÁ, Á ÞÅÌÏ×ÅË ÍÅÓÔÏ.