Usar ou não usar parenteses?!

Já que eu também entrei na onda dos quirks da linguagem C, eis mais uma: Algumas palavras-reservadas da linguagem C são usadas como se fossem funções. Tome o exemplo da palavra-reservada return:

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
  printf("Hello!\n");
  return(EXIT_SUCCESS); /* ECA! */
}

Já vi muitos códigos com essa construção de return. Só que return não é uma função e o código acima pode levar a crer que ela é. Eu uso return sem os parênteses… É uma questão de estilo, mas, na minha cabeça, é uma questão de coerência também.

Algumas palavras-reservadas são problemáticas nesse sentido. for, while, do..while, if, todas elas exigem parênteses. Mas sizeof não exige. Pelo menos na maioria dos casos! O código abaixo funciona, e de acordo com as especificações de C:

#include <stdio.h>

typedef struct {
  int i;
  char *p;
} TYPE;

TYPE var;

int main(void)
{
  printf("1: %lu\n", sizeof var);      /* VÁLIDO */
  printf("2: %lu\n", sizeof(var));     /* VÁLIDO */

  //printf("3: %lu\n", sizeof TYPE);   /* INVÁLIDO */
  printf("4: %lu\n", sizeof(TYPE));    /* VÁLIDO */

  return 0;
}

A palavra-reservada sizeof só precisa ser usada com parênteses para resolver a ambiguidade de tomar o tamanho de um tipo.

Para evitar incoerências, já que temos duas regras para o uso de sizeof, prefiro usar sempre com parênteses… De novo, uma questão de estilo. A incoerência aqui é vencida pela facilidade de memorização…

Anúncios

Deixe um comentário

Faça o login usando um destes métodos para comentar:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s