C and C++ Operators Precedence Table

Jul 30, 2007 code

_Wanderley,your explanation about why a program compiles in C++ and not in C seems to me logic and correct, but gave me some doubts, because I always learned that the C and C++ operator precedence are the same thing.I checked out the Appendix A in the “C ++ - How To Program” (sixth edition) and the book table is equal to the C operators precedence table and it is different from the C++ precedence table presented by you in the article.

Movendo o cursor do mouse com o teclado

Jul 26, 2007 code

Bom, vamos deixar de papo furado e “codar”. Para essa primeira tentativa iremos desenvolver um programa que move o cursor do _mouse _quando pressionada uma tecla de atalho e voltar à sua posição original quando pressionada outra tecla. Nota de desculpas: eu sei que estou sendo rabugento demais com o mouse. Já é o segundo artigo que escrevo falando como evitar o mouse e isso deve realmente irritar os fãs desse ponteirinho irritante.

C++0x parcial no novo GCC 4.3

Jul 24, 2007 code

A nova versão do GCC implementa em caráter de teste algumas novas características da nova versão da linguagem C++, que será lançada ainda nesta década (provavelmente em 2009). As novas funcionalidades são empolgantes e já fazem parte do imaginário dos programadores C++ já há algum tempo. Asserção estática** ** Atualmente temos duas maneiras de fazer asserções: usando a função assert (assert.h) ou utilizando a diretiva do pré-processador #error. Nenhum desses dois serve para templates.

Antidebug: interpretação baseada em exceção (parte 1)

Jul 20, 2007 code

Um depurador utiliza breakpoints para “paralisar” momentaneamente a execução do programa sendo depurado. Para isso ele se utiliza de uma bem conhecida instrução conhecida como int 3. Essa instrução gera uma exceção - exceção de breakpoint - que é capturada pelo sistema operacional e repassada para o código de tratamento dessa exceção. Em programas sendo depurados esse código está localizado no depurador. Em programas “livres” esse código normalmente não existe e ao acontecer essa exceção o aplicativo simplesmente “capota”.

Como ser um melhor desenvolvedor nos próximos seis meses

Jul 18, 2007 code

Graças ao meu amigo Thiago estive acompanhando uma série de posts de gente renomada sobre o tema deste artigo. Eles fazem parte de uma nova modalidade entre os blogueiros (pelo menos para mim) chamada de tagging. Funciona assim: você escreve sobre algo (por exemplo, “como ser um melhor cozinheiro em 6 meses”) e manda uma tag para que outras pessoas também escrevam sobre o mesmo assunto, o que pode ser feito referenciando o sítio dessas pessoas.

What happens inside the sizeof operator

Jul 16, 2007 code

The question: how to get the size of a struct member without declaring it as a variable in memory? In pseudocode: static const size_t FIELD_SIZE_MSGID = 15; struct FEEDER_RECORD_HEADER { char MessageID[FIELD_SIZE_MSGID]; char MessageIndex[10]; }; // error C2143: syntax error : missing ')' before '.' char MessageIndexBuffer[sizeof(FEEDER_RECORD_HEADER.MessageIndex) + 1]; // error C2070: '': illegal sizeof operand char MessageIndexBuffer[sizeof(FEEDER_RECORD_HEADER::MessageIndex) + 1]; In this first try (even being a nice one) we can clearly see by instinct that the construction is not supposed to work.

Desejo insano de programar no kernel

Jul 12, 2007 code

Muitas vezes meus amigos (um em particular) me perguntam por que não me interesso em programar em kernel mode, como se isso fosse um objetivo a ser alcançado por qualquer programador em user mode. Bom, não é. Claro que sempre me empenho em entender como o sistema funciona, nos menores detalhes e sempre que posso, o que nem sempre me leva para o kernel mode (entender como a CLR funciona, por exemplo).

Precedence difference

Jul 10, 2007 code

Once upon a time my old friend Kabloc wrote this little and “harmless” function in order to print the multiplication table: #include <stdio.h> int main() { int f1,f2,s=0; for(f1=1;(f1==11&&s!=5)?s=5,f1=0,putchar(10):(f1<=10)?f1=f1:f1=12,f1<=11;f1++) for(f2=1+s;f2<=5+s;f2++)printf("%dx%d=%d%c",f2,f1,f1*f2,(f2==5+s)?10:9); return 0; } Despite the fact the result is a strong candidate to “The International Obfuscated C Code Contest”, the linux guys told him the code was not successful on GCC, and somewhere inside those four lines there was a non-standard piece of code.

Google shortcuts

Jul 6, 2007 code

I do love shortcuts. Since my very first years using computers, shortcuts had become my obsession. I research them through the time, collecting them, using them. For a long time I avoid myself from touching the mouse, trainning to remember all keystroke sequences I know. I have nothing against using the mouse neither the people that do it. I’m just not very much enthusiastic in using mice. For sometime, I even believed that the cursor pointer was getting me annoyed, so I developed a program to get rid of it from the screen (using a shortcut, of course).

História do Windows - parte 2.0

Jul 4, 2007 code

Eu seu, eu sei. A maioria dos meus leitores odiou o tema história do Windows na era paleozóica. Porém, como eu disse na parte 1.0, estou apenas satisfazendo a outra parte de leitores que procurou no Google por esse tema e acabou caindo no meu antigo blog. Mas vejamos o lado bom: a partir da próxima versão iremos destrinchar a API do sistema, entendendo o porquê das coisas serem como elas são.