.:: Macetes de programação em C ::. .:: Introdução ::. Fiz esse tuto para ensinar as gerações da programação em C formas de simplificar seus codes, diminuir os bugs, almentar o desempenho, etc. Espero que vos seja útil :) .:: Uso da condicional ? ::. Esse é um assunto BÁSICO, mas que muitas pessoas dificilmente usam, em poucas situações você usará a condicional ?, mas quando der, use-a, é assim o uso dela: (condição)? efeito1:efeito2; Exemplo: (i == 0)? printf("i = 0\n"):printf("i != 0\n"); Pronto, veja como é simplificado o uso :) .:: Uso do switch() ::. Eu reforço como o switch é util, veja um exemplo: switch(fork()) { case 0: ... break; ... default; ... break; } Veja como é útil!, mas muitos preferem se manter em seu maldito if else if e else :) .:: Do While ::. Pouquissimas vezes vejo uso do do while, mas também reforço o uso dele, porque ele pode servir de menu, fazendo com que sempre que a opção setada esteja fora dos padrões, o do é realizado novamente, vejam que mágico! São coisas básicas que se aprende mas que se usa pouco que podem tornar seu code MUITO mais curto e rápido ;) .:: Alocação Dinâmica ::. Use MUITO alocação dinâmica, é uma das coisas mais úteis já criadas em C, você pode ter um ponteiro usado como qualquer outra coisa, é fantástico... Mas use com moderação, pois ma utilizado gera uma grande dor de cabeça e pode gerar um enorme consumo de memória .:: assert() ::. Essa não é uma função lá muito conhecida, eu sei, mas é util :). A função dela é checar uma condição que é passada como parâmetro, se ocorrer o contrário, o programa é fechado na hora. exemplo: assert(fd != -1); se fd for = -1, o programa será abortado :) Ou seja, evita MUITO bugs, MUITO MESMO. .:: Listas encadeadas ::. Listas encadeadas seriam structs infinitas que apontam para si mesmas, exemplo: struct lala { int oO; struct lala *next; }; Isso seria uma lista encadeada. E como reagir com elas? você deve ter uma criatividade dos infernos, e sempre ir anulando o próximo, ai só rodar um while(lala != NULL) para ver se morre. Sempre você terá de alocar o novo nó da lista, ou seja, tenha cuidado e crie limites para as listas, se não o consumo de memória será GIGANTESCO. Você pode substituir listas encadeadas por arrays de structs: lala l[512]; Ai seria só acessar :) .:: PThreads ::. Pthreads seriam formas de você distribuir melhor processamento e meória ram por entre funções de um processo, por exemplo, posso disparar uma thread para escrever em um arquivo e outra para ler ao mesmo tempo, essa é só uma dica, pode ser que eu crie um tutorial sobre pthreads. Geralmente usando-as o desempenho de seus programas sobe assustadoramente dependendo do uso delas. .:: IPC ::. Use IPC sempre que precisar de comunicação entre processos, shared memory, sockets, oque for, mas usurpe desse recurso maravilhoso :) Se quiser alguns tutoriais de IPC, eu fiz 1 de Shared memory, outro de pipes e de signals, ambos estão em: totergarten.wordpress.com .:: Cast ::. Cast seria uma forma de modelar uma tipagem, exemplo: [code float.c] #include int main() { long double str[512]; strcpy((char*)str, "Hehehe"); puts((char*)str); return 0; } [/code] Isso basicamente é cast, os (char*) :), eles "remodelam" o long double fazendo ele parecer ponteiro char, genial não? :) .:: Finalização ::. Denovo um beijo a khizzy minha amiga :~~ Um agradecimento a todos os meus amigos :) Meu contato: todesskrahe@gmail.com .:: Bibliografia ::. Gnu LibC Manual Dave C