cod naspa

Acest forum este dedicat intrebarilor de programare care nu-si au locul in unul din celelalte forumuri

Re: cod naspa

Mesajde bu7ch3r » 25 Mar 2013, 13:59

Un coleg sturlubatic s-a gandit sa verifice pointerii mai riguros :))
Cod: Selectaţi tot
#include <stdio.h>

int foo(int *pPseudoPointer)
{
    int nRetVal= -1;
    if(sizeof(pPseudoPointer) > 0)
    {
        printf("The value is %d !", *pPseudoPointer);
        nRetVal= 0;
    }
    else
    {
        printf("NULL POINTER!!!!");
    }

    return nRetVal;
}

int main (void)
{
    int *pThePOINTER = NULL;
    foo(pThePOINTER);

    return 0;

}
Cu stima,
Lupu Claudiu
Avatar utilizator
bu7ch3r
Membru++
Membru++
 
Mesaje: 326
Membru din: 17 Mai 2011, 15:17
Localitate: Sofia
Judet: Iaşi

Re: cod naspa

Mesajde Marius Bancila » 29 Mar 2013, 14:39

Am vazut multe lucruri tampite la viata mea, dar asta e in top. E clar ca omul habar nu are ce e aia pointer.
Marius Bancila
Fondator Codexpert, Microsoft MVP VC++
Site personal | Blog
Avatar utilizator
Marius Bancila
Fondator
Fondator
 
Mesaje: 2338
Membru din: 11 Iul 2007, 11:45
Localitate: Timisoara
Judet: Timiş

Re: cod naspa

Mesajde bu7ch3r » 04 Apr 2013, 22:52

Mi-am adus aminte de ceva epic:
Cod: Selectaţi tot
while(i != 0 &&
         i != 1 &&
         i != 2 &&
         .....
         i != 12)
{
.....
}
Cu stima,
Lupu Claudiu
Avatar utilizator
bu7ch3r
Membru++
Membru++
 
Mesaje: 326
Membru din: 17 Mai 2011, 15:17
Localitate: Sofia
Judet: Iaşi

Re: cod naspa

Mesajde Ovidiu Cucu » 04 Apr 2013, 23:26

Iata si una pentru "eliminat if-uri imbricate":
Cod: Selectaţi tot
   while(1)
   {
      if(conditie_1)
      {
         // do something...
         break;
      }
      if(conditie_2)
      {
         // do something...
         break;
      }

      // s.a.m.d.

      if(conditie_N)
      {
         // do something...
         break;
      }
      // si in final... cireasa de pe tort :)
      break;
   }
Avatar utilizator
Ovidiu Cucu
Fondator
Fondator
 
Mesaje: 3776
Membru din: 11 Iul 2007, 16:10
Localitate: Iasi
Judet: Iaşi

Re: cod naspa

Mesajde bu7ch3r » 05 Apr 2013, 00:22

Asta-i din automotive :))))) Cunosc :P
Cu stima,
Lupu Claudiu
Avatar utilizator
bu7ch3r
Membru++
Membru++
 
Mesaje: 326
Membru din: 17 Mai 2011, 15:17
Localitate: Sofia
Judet: Iaşi

Re: cod naspa

Mesajde Ovidiu Cucu » 02 Aug 2013, 14:09

Daca nu stiati inca, una dintre cele mai importante constante din Univers este MAX_PATH. :)

Cod: Selectaţi tot
    TCHAR pszText[MAX_PATH];
    ::GetWindowText(hWnd, pszText, MAX_PATH);
Avatar utilizator
Ovidiu Cucu
Fondator
Fondator
 
Mesaje: 3776
Membru din: 11 Iul 2007, 16:10
Localitate: Iasi
Judet: Iaşi

Re: cod naspa

Mesajde Ovidiu Cucu » 17 Aug 2013, 14:13

Scurt:
Cod: Selectaţi tot
    if(a > b)
        return ERROR_FILE_NOT_FOUND;
Avatar utilizator
Ovidiu Cucu
Fondator
Fondator
 
Mesaje: 3776
Membru din: 11 Iul 2007, 16:10
Localitate: Iasi
Judet: Iaşi

Re: cod naspa

Mesajde Marius Bancila » 27 Aug 2013, 12:34

Cod: Selectaţi tot
pDBTable->iTblID = (long)iTableID; // iTblID si iTableID sunt amandoua int

Cod: Selectaţi tot
ptr->lGroupID = (long)iGroupID; // lGroupID e long, iGroupID e int

Cod: Selectaţi tot
INT foo::Fetch(BOOL)
{
   return (long) GetSomething(); // GetSomething returneaza long
}
Marius Bancila
Fondator Codexpert, Microsoft MVP VC++
Site personal | Blog
Avatar utilizator
Marius Bancila
Fondator
Fondator
 
Mesaje: 2338
Membru din: 11 Iul 2007, 11:45
Localitate: Timisoara
Judet: Timiş

Re: cod naspa

Mesajde bu7ch3r » 27 Aug 2013, 13:19

Threaduri pentru avansati :)
Daca omu a invatat recent mutexi ce s-a gandit - decat sa crape mai bine pun pentru orice variabila. Asta e doar o mica parte din cod.
Cel mai epic e ca seteaza variabila aia globala pe false la inceputul threadului - ca sa fie sigur ca ramne in join pana la adanci batraneti daca apeleaza terminate inainte de primul lock.
Cod: Selectaţi tot
bool_t      g_shouldThreadExit = False;

// Protects the access to g_shouldThreadExit
static pthread_mutex_t                  un_mutex = PTHREAD_MUTEX_INITIALIZER;

ThreadRoutine
{
   bool_t      shoudlThreadExit = False;   

   pthread_mutex_lock(un_mutex);
       g_shouldThreadExit = False;
   pthread_mutex_unlock(un_mutex);   

    while(1)
    {
        [....COD.....]
        (void)usleep(delay);
        pthread_mutex_lock(un_mutex);
        shoudlThreadExit = g_shouldThreadExit
        pthread_mutex_unlock(un_mutex);

        if (True == shoudlThreadExit)
        {           
            break;
        }
    }
}

void
ThreadTerminate(void)
{
    pthread_mutex_lock(un_mutex);
        g_shouldThreadExit = True;
    pthread_mutex_unlock(un_mutex);

    pthread_join(thread)
    pthread_mutex_destroy(un_mutex);
}

Cu stima,
Lupu Claudiu
Avatar utilizator
bu7ch3r
Membru++
Membru++
 
Mesaje: 326
Membru din: 17 Mai 2011, 15:17
Localitate: Sofia
Judet: Iaşi

Re: cod naspa

Mesajde Ovidiu Cucu » 03 Sep 2013, 19:32

Write some code... then take a break. :)

Cod: Selectaţi tot
        switch(CommDlgExtendedError())
        {
        case CDERR_DIALOGFAILURE:
            break;
        case CDERR_FINDRESFAILURE:
            break;
        case CDERR_INITIALIZATION:
            break;
        case CDERR_LOADRESFAILURE:
            break;
        case CDERR_LOADSTRFAILURE:
            break;
        case CDERR_LOCKRESFAILURE:
            break;
        case CDERR_MEMALLOCFAILURE:
            break;
        case CDERR_MEMLOCKFAILURE:
            break;
        case CDERR_NOHINSTANCE:
            break;
        case CDERR_NOHOOK:
            break;
        case CDERR_NOTEMPLATE:
            break;
        case CDERR_REGISTERMSGFAIL:
            break;
        case CDERR_STRUCTSIZE:
            break;
        }
Avatar utilizator
Ovidiu Cucu
Fondator
Fondator
 
Mesaje: 3776
Membru din: 11 Iul 2007, 16:10
Localitate: Iasi
Judet: Iaşi

Re: cod naspa

Mesajde Silviu Ardelean » 07 Sep 2013, 10:54

Un critic literar al acestui forum, in una din putinele bucati personale de cod expuse online, paseaza o referinta unei functii dar nici dracu' nu modifica ceva in acel obiect.
Cod: Selectaţi tot
int foo(type_t& a)
{
  if(a.a == 1)
      return 1;
   else
      return 0;
}

Dupa, a aflat si el de la altii ca ar fi bine sa foloseasca calificatorul const.
Avatar utilizator
Silviu Ardelean
Senior
Senior
 
Mesaje: 1175
Membru din: 12 Iul 2007, 09:22
Localitate: Timisoara
Judet: Timiş

Re: cod naspa

Mesajde florin_b » 09 Sep 2013, 13:16

Un fost coleg scria un program de redenumit fisiere si s-a gindit sa-l faca multithreading, ca sa mearga mai repede. In functia de OnClick a butonului care pornea redenumirea avea ceva de genul asta:

Cod: Selectaţi tot
HANDLE t = CreateThread(NULL, 0, RenameFiles, NULL, 0, NULL);
WaitForSingleObject(t, INFINITE);


Dupa aia umbla prin birou si se intreba de ce tot UI-ul aplicatiei e blocat pe parcursul operatiunii, ca doar el facuse pe thread-uri. :)) In profilul de linkedin are trecut ca-i expert in multithreading si PPL. :))
florin_b
Junior
Junior
 
Mesaje: 8
Membru din: 10 Iun 2013, 10:38
Judet: Bucureşti

Re: cod naspa

Mesajde Silviu Ardelean » 09 Sep 2013, 13:24

Daca nu i-a spus nimeni unde se puna asteptarea... :D
Nu sunt sigur ca avea nevoie de asteptare (fisierele puteau fi redenumite intr-un loop pe functia threadului daca tot l-a facut, iar dupa sa notifice GUI-ul) dar cum nu cunosc contextul si codul ma opresc aici.
Avatar utilizator
Silviu Ardelean
Senior
Senior
 
Mesaje: 1175
Membru din: 12 Iul 2007, 09:22
Localitate: Timisoara
Judet: Timiş

Re: cod naspa

Mesajde Ovidiu Cucu » 06 Dec 2013, 14:56

In caz ca sistemul sufera de Alzheimer. :)

Cod: Selectaţi tot
    if(!::CreateProcess(...))
    {
        DWORD dwError = ::GetLastError();
        ::SetLastError(dwError);
    }
Avatar utilizator
Ovidiu Cucu
Fondator
Fondator
 
Mesaje: 3776
Membru din: 11 Iul 2007, 16:10
Localitate: Iasi
Judet: Iaşi

Re: cod naspa

Mesajde Ovidiu Cucu » 19 Iun 2015, 11:27

Infinite loop: see Loop, Infinite
Loop, Infinite: see Infinite loop


Cod: Selectaţi tot
    std::vector<Item*>::iterator iter = m_Item.begin();
    while(iter != m_Item.end())
    {
        if (!(*iter)->bVisible)
            continue;

        // doesn't matter...

        ++iter;
    }


Genial! :)
Avatar utilizator
Ovidiu Cucu
Fondator
Fondator
 
Mesaje: 3776
Membru din: 11 Iul 2007, 16:10
Localitate: Iasi
Judet: Iaşi

AnteriorUrmătorul

Înapoi la Programare generala

Cine este conectat

Utilizatorii ce navighează pe acest forum: Niciun utilizator înregistrat şi 2 vizitatori

cron