Bom dia!
Eu queria saber se é possivel adicionar um comando em C em um programa em C++?
Se For possivel dei-me um exemplo de codigo?
Não entendi muito bem a pergunta, você se refere a usar um comando de C em C++?
Um código escrito em C pode ser muito bem compilado em C++ (salvo exceções)
Mas vamos fazer um teste:
Main.cpp
#include <stdio.h> // O Correto seria incluir a biblioteca <cstdio> pois importa "as coisas" para o namespace std; mais uma prova de que o compilador (G++) consegue "compilar" um arquivo de 'C'
int main(int argc, char **argv){
printf("Olá Mundo, estou em um arquivo de C++ compilado pelo G++ usando a biblioteca de C o.0\n");
return 0;
}
(Compile com : g++ -o Main Main.cpp)
Agora se quiser outros exemplos , posso citar : SDL,GLUT,GTK+ e muitos outros
Vou usar uma frase que eu li a pouco tempo atrás:
De certa maneira, eu acho justo que, ao mostrar exemplos de funções herdadas da biblioteca padrão do C pelo C++, tais exemplos sejam dados com programas que também são válidos em C
Ou seja, (quase) qualquer programa que você fizer em C será valido também em C++
Espero ter ajudado
Qualquer dúvida só postar aqui.
[]'s
T+
EDIT: Segue um exemplo da biblioteca SDL (que foi totalmente escrito em C) rodando em um aplicativo de C++:
int main ( int argc, char** argv )
{
// initialize SDL video
if ( SDL_Init( SDL_INIT_VIDEO ) < 0 )
{
cout << "Unable to init SDL: " << SDL_GetError() << endl;
return 1;
}
// make sure SDL cleans up before exit
atexit(SDL_Quit);
// create a new window
SDL_Surface* screen = SDL_SetVideoMode(640, 480, 16,
SDL_HWSURFACE|SDL_DOUBLEBUF);
if ( !screen )
{
cout << "Unable to set 640x480 video: " << SDL_GetError() << endl;
return 1;
}
// load an image
SDL_Surface* bmp = SDL_LoadBMP("cb.bmp");
if (!bmp)
{
cout << "Unable to load bitmap:" << SDL_GetError() << endl;
return 1;
}
// centre the bitmap on screen
SDL_Rect dstrect;
dstrect.x = (screen->w - bmp->w) / 2;
dstrect.y = (screen->h - bmp->h) / 2;
// program main loop
bool done = false;
while (!done)
{
// message processing loop
SDL_Event event;
while (SDL_PollEvent(&event))
{
// check for messages
switch (event.type)
{
// exit if the window is closed
case SDL_QUIT:
done = true;
break;
// check for keypresses
case SDL_KEYDOWN:
{
// exit if ESCAPE is pressed
if (event.key.keysym.sym == SDLK_ESCAPE)
done = true;
break;
}
} // end switch
} // end of message processing
// finally, update the screen :)
SDL_Flip(screen);
} // end main loop
// free loaded bitmap
SDL_FreeSurface(bmp);
// all is well ;)
printf("Exited cleanly\n");
return 0;
}
[!] Para executar é necessário possuir instalado a Biblioteca SDL e qualquer imagem com o nome de "cb.bmp".
3. Re: Codigo em C em um programa em C++ [RESOLVIDO]
paulo1205usa Ubuntu
Post recolhido
Enviado em 23/04/2015 - 23:58h
Se você tiver feito sua pergunta a sério, e quiser realmente aprender a respeito, eu recomendo os seguintes artigos:
- “Sybling Rivalry: C and C++” (algo como “Rivalidade entre Irmãos: C e C++”), em http://www.stroustrup.com/sibling_rivalry.pdf, escrito pelo próprio Bjarne Stroustrup (o criador do C++).
- “C and C++: Siblings” (“C e C++: Irmãos”), em http://www.stroustrup.com/siblings_short.pdf, escrito pelo mesmo autor, é uma espécie de resumo do artigo indicado acima, com algumas atualizações.
- “Incompatibilities between ISO C and ISO C++” (“Incompatibilidades entre C ISO e C++ ISO”), em http://david.tribble.com/text/cdiffs.htm, que enfatiza não a diferença nos caminhos de evolução entre as duas linguagens, mas disseca, ponto por ponto, todas as diferenças entre os padrões ISO para o C (de 1999) e para o C++ (de 1998) que podem levar um programa escrito com uma das linguagens em mente a não funcionar ou apresentar comportamento diferente na outra (NOTA: tanto o C quanto o C++ ganharam novos padrões ISO em 2011, mas quase todas as diferenças apontadas continuam valendo).
4. Re: Codigo em C em um programa em C++
TheoFabrisusa Ubuntu
Post recolhido
Enviado em 24/04/2015 - 14:17h
Thihup escreveu:
Não entendi muito bem a pergunta, você se refere a usar um comando de C em C++?
Um código escrito em C pode ser muito bem compilado em C++ (salvo exceções)
Mas vamos fazer um teste:
Main.cpp
#include <stdio.h> // O Correto seria incluir a biblioteca <cstdio> pois importa "as coisas" para o namespace std; mais uma prova de que o compilador (G++) consegue "compilar" um arquivo de 'C'
int main(int argc, char **argv){
printf("Olá Mundo, estou em um arquivo de C++ compilado pelo G++ usando a biblioteca de C o.0\n");
return 0;
}
(Compile com : g++ -o Main Main.cpp)
Agora se quiser outros exemplos , posso citar : SDL,GLUT,GTK+ e muitos outros
Vou usar uma frase que eu li a pouco tempo atrás:
De certa maneira, eu acho justo que, ao mostrar exemplos de funções herdadas da biblioteca padrão do C pelo C++, tais exemplos sejam dados com programas que também são válidos em C
Ou seja, (quase) qualquer programa que você fizer em C será valido também em C++
Espero ter ajudado
Qualquer dúvida só postar aqui.
[]'s
T+
EDIT: Segue um exemplo da biblioteca SDL (que foi totalmente escrito em C) rodando em um aplicativo de C++:
int main ( int argc, char** argv )
{
// initialize SDL video
if ( SDL_Init( SDL_INIT_VIDEO ) < 0 )
{
cout << "Unable to init SDL: " << SDL_GetError() << endl;
return 1;
}
// make sure SDL cleans up before exit
atexit(SDL_Quit);
// create a new window
SDL_Surface* screen = SDL_SetVideoMode(640, 480, 16,
SDL_HWSURFACE|SDL_DOUBLEBUF);
if ( !screen )
{
cout << "Unable to set 640x480 video: " << SDL_GetError() << endl;
return 1;
}
// load an image
SDL_Surface* bmp = SDL_LoadBMP("cb.bmp");
if (!bmp)
{
cout << "Unable to load bitmap:" << SDL_GetError() << endl;
return 1;
}
// centre the bitmap on screen
SDL_Rect dstrect;
dstrect.x = (screen->w - bmp->w) / 2;
dstrect.y = (screen->h - bmp->h) / 2;
// program main loop
bool done = false;
while (!done)
{
// message processing loop
SDL_Event event;
while (SDL_PollEvent(&event))
{
// check for messages
switch (event.type)
{
// exit if the window is closed
case SDL_QUIT:
done = true;
break;
// check for keypresses
case SDL_KEYDOWN:
{
// exit if ESCAPE is pressed
if (event.key.keysym.sym == SDLK_ESCAPE)
done = true;
break;
}
} // end switch
} // end of message processing
// finally, update the screen :)
SDL_Flip(screen);
} // end main loop
// free loaded bitmap
SDL_FreeSurface(bmp);
// all is well ;)
printf("Exited cleanly\n");
return 0;
}
[!] Para executar é necessário possuir instalado a Biblioteca SDL e qualquer imagem com o nome de "cb.bmp".
Bem, tive algumas duvidas:
1. Para que serve "int main ( int argc, char** argv /i])"?
2. Para que serve a header #include <SDL/SDL.h>?
5. Re: Codigo em C em um programa em C++
paulo1205usa Ubuntu
Post recolhido
Enviado em 24/04/2015 - 22:00h
TheoFabris escreveu:
Bem, tive algumas duvidas:
1. Para que serve "int main ( int argc, char** argv /i])"?
Nos programas em questão, para nada. Não sei por que o Thiago os colocou ali, se não pretendia usar.
Os padrões do C e do C++ preveem dois casos de declaração de main():
1) quando não se tem interesse em receber argumentos do S.O. -- nesse caso, a declaração de main deve ser feita como
int main(void) /* Serve em C ou C++ */
ou
int main() // Apenas em C++; em C, parênteses vazios têm outro significado
2) quando se quer receber argumentos enviados pelo S.O. ou por outra aplicação -- nesse caso, a declaração de main deve ser
int main(int argc, char **argv) /* tanto em C como C++ */
, sendo que os dois parâmetros são usados respectivamente para contar (argc) e apontar para o texto (argv[n], com 0<=n<argc) dos argumentos passados ao programa.
Note que em ambos os casos, o tipo de retorno de main() é int.
2. Para que serve a header #include <SDL/SDL.h>?
No exemplo dado pelo Thiago, ele usa a biblioteca SDL (de Simple DirectMedia Layer) para exibir uma imagem na tela. Esse cabeçalho contém a declaração das funções da SDL usadas por ele para esse fim.
6. Re: Codigo em C em um programa em C++
Thihupusa Manjaro Linux
Post recolhido
Enviado em 25/04/2015 - 08:17h
paulo1205 escreveu:
TheoFabris escreveu:
Bem, tive algumas duvidas:
1. Para que serve "int main ( int argc, char** argv /i])"?
Nos programas em questão, para nada. Não sei por que o Thiago os colocou ali, se não pretendia usar.
Coloquei esses argumentos, pois compilei o código no Windows , e lá é definido o SDL_main e é necessário os argumentos argc e argv
Espero ter ajudado
[]'s
T+
7. Re: Codigo em C em um programa em C++ [RESOLVIDO]
paulo1205usa Ubuntu
Post recolhido
Enviado em 25/04/2015 - 13:05h
Windows e suas indefectível mania de violar padrões...
8. Re: Codigo em C em um programa em C++ [RESOLVIDO]
Thihupusa Manjaro Linux
Post recolhido
Enviado em 25/04/2015 - 13:19h
paulo1205 escreveu:
Windows e suas indefectível mania de violar padrões...
É verdade o.0
Mas consegui pegar meu notebook de novo e agora let's program in Linux