Jump to content

Compilador


Polmax
 Share

Recommended Posts

Olá

Dev-C++ é um Ambiente de Desenvolvimento Integrado (IDE - Integrated Development Environment) para programação na linguagem C/C++. Ele usa a porta Mingw do GCC (GNU Compiler Collection) como seu compilador. O programa cria executáveis nativas no Win32, console ou GUI. Dev-C++ também pode ser usado juntamente com o Cygwin. Dev-C++ é gratuito e de código aberto e é totalmente escrito em Delphi.

Para facilitar o desenvolvimento e compilação de um programa em C, o Dev-C++ oferece

um ambiente que integra um editor de textos eum compilador para linguagem C. O compilador

usado pelo Dev-C++ é o famoso gcc (Gnu C Compiler).

No Windows há basicamente dois tipos de programas de usuário:

• aplicações para o console (Console Applications), que são executadas numa janela de

texto (também conhecida como Prompt do MS-DOS); e

• aplicações Gráficas (GUI Applications), que usam janelas, menus e outros elementos

visuais como parte de sua interface com o programador.

No semestre passado tive a disciplina de Compiladores na UTAD em Vila Real e usava nas aulas práticas o Dev-c++, por isso recomendo o vivamente, pois é acessivel para qualquer um usar, e não está desatualizado!!!! 😞🙂

Sandra Garcia

Link to comment
Share on other sites

O DevC ++ é um bom compilador. Eu recomendo. Não estará assim tão desactualizado quanto isso na minha opinião. Além de que o podes actualizar.

Eu vi que recomendam o Devc++ como compilador para C.Eu descarreguei-o mas parece desactualizado , será melhor escolher outro ou mesmo desactualizado ainda o continuam a recomendar 🙂 ?

DevC++ NÃO É UM COMPILADOR!!!

No semestre passado tive a disciplina de Compiladores na UTAD em Vila Real e usava nas aulas práticas o Dev-c++, por isso recomendo o vivamente, pois é acessivel para qualquer um usar, e não está desatualizado!!!! 😞😛

Já experimentaste o Code::Blocks?

Comecei a programar no DevC++, mas quando descobri o Code::Blocks não quis outra coisa, além que o DevC++ é limitado em termos de compiladores, só usas o MinGW enquando no C::B podes usar montes de compiladores, para mais o Code::Blocks está muito mais atualizado do que o DevC++.

As cores do C::B predefinidas são muito mais bonitas 😛

Mas se queres aplicações a "serio" em Windows é certamente o Visual Studio e/ou QT.Creator(tanto para windows como para outras plataformas, além que tem uma excelente framework).

Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Link to comment
Share on other sites

DevC++ NÃO É UM COMPILADOR!!!

Calma já percebi xD.

Eu já usei o VC tanto para C++ como para C#

Mas nunca usei nada para C e por isto estava a perguntar mas acho que vou ficar com o VC , apesar do tamanho (Que não é nenhum problema)

gosto da interface e não vou ter problemas de actualização em nenhum momento 😞

O Code::Blocks não conheço mas vou experimentar  🙂

Já agora , pra semana começamos com programação imperativa na UM , alguém sabe qual eles "preferem que usemos" ou que vão recomendar?

Link to comment
Share on other sites

Já agora , pra semana começamos com programação imperativa na UM , alguém sabe qual eles "preferem que usemos" ou que vão recomendar?

garanto-te que a perferencia deles e que os trabalhos estejam correctos ... o que usas para os fazer nao faz a menor diferença

mas no final aconcelho a não usar o VC++ pela simples razão que podes muito bem trabalhar no linux e ficares a arder com a escolha do VC++ ...

escolhe um IDE que de para usar um compilador compativel com mais sistemas operativos como o gcc (mingw para windows)

IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

Eles de certeza que aconselham algum compilador , isso foi o que eu perguntei.

deve ser o GCC ou o MinGW.

Mas nunca usei nada para C e por isto estava a perguntar mas acho que vou ficar com o VC , apesar do tamanho (Que não é nenhum problema)

C++ é quase 100% compatível com C por isso podes compilar com o VC++, mas dou a mesma recomendação do que o HappyHippyHippo

Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Link to comment
Share on other sites

C++ é quase 100% compatível com C

Assim como o sotaque madeirense é quase 100% compativel com o sotaque continental?

Ou o ingles do Reino Unido com o ingles dos Estados Unidos?

Por isso é que se veem tantos casts (desnecessarios) em C

int *ptr = malloc(100 * sizeof *ptr);

int *ptr = (int*)malloc(100 * sizeof *ptr);

Alias, em C++, segundo penso, provavelmente era melhor usar outra maneira de gerir a memoria.

What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Link to comment
Share on other sites

Assim como o sotaque madeirense é quase 100% compativel com o sotaque continental?

Ou o ingles do Reino Unido com o ingles dos Estados Unidos?

Falta o quase, mas "praticamente" todo o código em C funciona em C++ 🙂

Por isso é que se veem tantos casts (desnecessarios) em C

int *ptr = malloc(100 * sizeof *ptr);

int *ptr = (int*)malloc(100 * sizeof *ptr);

Alias, em C++, segundo penso, provavelmente era melhor usar outra maneira de gerir a memoria.

Não terás trocado o código, pela a frase parece que trocaste o [ code = ]  "c" com o "cpp".

Em C++ é aconselhado usar o new e o delete.

int *ptr = new int[100];

Referente ao VC tenho uma duvida , quando tiro o visual c++ express + express ele esta preparado tanto para C++ como para C?

é que só consigo escolher C++

Sim, o VC++ compila C também, ainda tens suporte para "class", templates e heranças 😛 (estou a brincar, com isto fica com código C++ 😞 )

Quando alguém tem uma dúvida aqui no fórum de C, eu compilo sempre os programas com o g++ e nunca tive problemas.

Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Link to comment
Share on other sites

O VC++ suporta C, testei no Code::Blocks com o compilador VC++ e funcionou perfeitamente, não experimentei no Visual Studio porque tive preguiça de criar um projecto novo 😞

Mas podes testar e ver se funciona.

Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Link to comment
Share on other sites

Compilei todos os 516 ficheiros de C na minha directoria de "lixo" como C e como C++.

Resultado

Em 516 compilações

356 'funcionaram' com o gcc -std=c89 -pedantic -Wall -Werror -lm (68.99%)

255 'funcionaram' com o g++ -std=c++98 -pedantic -Wall -Werror -lm (49.42%)

Ou seja, 71.63% de programas C89 correctos são programas C++98 correctos.

Sem o -Wall os numeros passam a 379 (73.45%), 294 (56.98%), e 77.57%

Assumindo que a minha directoria de "lixo" seja significativa ... dizer que duas linguagens com interpretações diferentes para 28.37% documentos são "praticamente iguais" é, no minimo, um grande exagero de linguagem 😞

Programa usado para testar as diferenças entre C e C++:

#define _BSD_SOURCE
#include <dirent.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <unistd.h>

int main(int argc, char **argv) {
  int tot = 0;
  int gcc = 0, gpp = 0;
  DIR *d;
  struct dirent *f;
  char gcccommand[1000];
  char gppcommand[1000];
  static const char gcchead[] = "gcc -std=c89 -pedantic -Wall -Werror";
  static const char gpphead[] = "g++ -std=c++98 -pedantic -Wall -Werror";
  static const char commandtail[] = "-lm >/dev/null 2>&1";
  char path[1000] = ".";

  if (argc == 2) {
    strcpy(path, argv[1]);
    chdir(path);
  }

  d = opendir(path);
  while ((f = readdir(d)) != NULL) {
    if (f->d_type == DT_REG) {
      size_t len = strlen(f->d_name);
      if (f->d_name[len - 1] == 'c') {
        sprintf(gcccommand, "%s %s %s", gcchead, f->d_name, commandtail);
        sprintf(gppcommand, "%s %s %s", gpphead, f->d_name, commandtail);
        gcc += !system(gcccommand);
        gpp += !system(gppcommand);
        tot += 1;
      }
    }
  }
  closedir(d);

  printf("Em %d compilações\n", tot);
  printf("%d 'funcionaram' com o gcc -std=c89 -pedantic -Wall -Werror -lm (%.2f%%)\n", gcc, gcc * 100.0 / tot);
  printf("%d 'funcionaram' com o g++ -std=c++98 -pedantic -Wall -Werror -lm (%.2f%%)\n", gpp, gpp * 100.0 / tot);
  printf("\n");
  printf("Ou seja, %.2f%% de programas C89 correctos são programas C++98 correctos.\n", gpp * 100.0 / gcc);
  return 0;
}

What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.