Faz tempo que tenho essa curiosidade mas nunca achei nada a respeito (tambem nao procurei muito duro por isso)
Eu ate entendo de um codigo feito em C++ ser utilizado em Python ou Java ja que ambos seguem o mesmo paradigma, mas no caso de um codigo feito em C++ como ele pode ser utilizado em C, eh criado um header/lib especifica ou tem como compilar gerando objeto do codigo para C, sera que fui claro ?
Do modo que C++ pode ser acessivel pelo C o inverso tambem eh possivel ?
Tags:
Não seria Portabilidade em vez de Protabilidade?
(erro de digitação corrigido)
Cara, eu começei a pensar e realmente foi uma boa dúvida hehehe...
Portabilidade não necessariamente significa ligar qualquer biblioteca com qualquer c ou c++ .... e sim a capacidade de portar o código fonte que gerou essa lib para outras plataformas ... hoje em dia este problema está muito menor do que era antigamente quando tinhamos varios SOs e vários hardwares rodando isso ...
Nessa eu pessoalmente dou um pontinho há mais para o C++ por causa de sua natureza de abstração.
Do ponto de vista de linkedição (que é o que vocês estavam falando acima) ... na teoria é possivel ligar qualquer coisa com qualquer coisa ... por exemplo ... é totalmente possível usar LIBs de C ou C++ com C# ... o inverso não acredito ser possível ... existem também maneiras de ligar C e C++ com Java...
Antigamente se usava muito C ou C++, Pascal, Object Pascal com Clipper por exemplo ... saudades do velho DOS...
Com lixux ... ficou um pouco mais fácil brincar com essas coisas ... GCC é muito legal pra isso... o sistema de bibliotecas no lixux é bem feitinho e tal ...
Toda integração é feita via um dicionário de entradas, cada uma contendo seus argumentos... com isso pode-se por exemplo abrir uma DLL, verificar as assinaturas que tem dentro e mapear as que se quer usar.
Uma coisa que me veio a cabeça agora é:
Como em C utilizar contrutores de Classe com Sobrecarga? alguém tem experiência com isso?
Portabilidade não necessariamente significa ligar qualquer biblioteca com qualquer c ou c++ .... e sim a capacidade de portar o código fonte que gerou essa lib para outras plataformas ... hoje em dia este problema está muito menor do que era antigamente quando tinhamos varios SOs e vários hardwares rodando isso ...
Nessa eu pessoalmente dou um pontinho há mais para o C++ por causa de sua natureza de abstração.
Do ponto de vista de linkedição (que é o que vocês estavam falando acima) ... na teoria é possivel ligar qualquer coisa com qualquer coisa ... por exemplo ... é totalmente possível usar LIBs de C ou C++ com C# ... o inverso não acredito ser possível ... existem também maneiras de ligar C e C++ com Java...
Antigamente se usava muito C ou C++, Pascal, Object Pascal com Clipper por exemplo ... saudades do velho DOS...
Com lixux ... ficou um pouco mais fácil brincar com essas coisas ... GCC é muito legal pra isso... o sistema de bibliotecas no lixux é bem feitinho e tal ...
Toda integração é feita via um dicionário de entradas, cada uma contendo seus argumentos... com isso pode-se por exemplo abrir uma DLL, verificar as assinaturas que tem dentro e mapear as que se quer usar.
Uma coisa que me veio a cabeça agora é:
Como em C utilizar contrutores de Classe com Sobrecarga? alguém tem experiência com isso?
Não quero iniciar uma "flamewar", mas, não tenho saudades do limitado DOS, e espero que "lixux", acima seja mais um erro de "catilografia".
Portabilidade é como você descreveu, mas se não tiver acesso ao código fonte, não adianta...
Quanto à sua questão:
Em C não temos nem Classes (apenas structs), nem construtores nem sobrecarga, a nao ser que se use um esquema com enum, struct e definição de tipos (como parte da struct e algumas macros).
*Em tese*, basta gerar um arquivo objeto (adiocionado ou não a uma biblioteca), e ligar ao programa principal, mas como dito por PACMAN abaixo, isso não é portabilidade.
Opa, resposta diretamente à questão original, não como ficará a ordem...
Alexandre Pereira (PACMAN) disse:
Portabilidade não necessariamente significa ligar qualquer biblioteca com qualquer c ou c++ .... e sim a capacidade de portar o código fonte que gerou essa lib para outras plataformas ... hoje em dia este problema está muito menor do que era antigamente quando tinhamos varios SOs e vários hardwares rodando isso ...
Nessa eu pessoalmente dou um pontinho há mais para o C++ por causa de sua natureza de abstração.
Do ponto de vista de linkedição (que é o que vocês estavam falando acima) ... na teoria é possivel ligar qualquer coisa com qualquer coisa ... por exemplo ... é totalmente possível usar LIBs de C ou C++ com C# ... o inverso não acredito ser possível ... existem também maneiras de ligar C e C++ com Java...
Antigamente se usava muito C ou C++, Pascal, Object Pascal com Clipper por exemplo ... saudades do velho DOS...
Com lixux ... ficou um pouco mais fácil brincar com essas coisas ... GCC é muito legal pra isso... o sistema de bibliotecas no lixux é bem feitinho e tal ...
Toda integração é feita via um dicionário de entradas, cada uma contendo seus argumentos... com isso pode-se por exemplo abrir uma DLL, verificar as assinaturas que tem dentro e mapear as que se quer usar.
Uma coisa que me veio a cabeça agora é:
Como em C utilizar contrutores de Classe com Sobrecarga? alguém tem experiência com isso?
Não quero iniciar uma "flamewar", mas, não tenho saudades do limitado DOS, e espero que "lixux", acima seja mais um erro de "catilografia".
Portabilidade é como você descreveu, mas se não tiver acesso ao código fonte, não adianta...
Quanto à sua questão:
Em C não temos nem Classes (apenas structs), nem construtores nem sobrecarga, a nao ser que se use um esquema com enum, struct e definição de tipos (como parte da struct e algumas macros).
Certo, usei portabilidade por ignorância mesmo, não sabia o termo que definiria, agora trabamos com linkedicão.
Mas como isso é feito para C++, Python ou Java, por exemplo:
Faco uma funcão em C para calcular qualquer coisa (return a+b), para compilar com GCC gerando somente objeto uso: gcc -c arquivo.c -o arquivo.o
Como usar essa funcão em outra linguagem, +- na prática ?
Certo, usei portabilidade por ignorância mesmo, não sabia o termo que definiria, agora trabamos com linkedicão.
Mas como isso é feito para C++, Python ou Java, por exemplo:
Faco uma funcão em C para calcular qualquer coisa (return a+b), para compilar com GCC gerando somente objeto uso: gcc -c arquivo.c -o arquivo.o
Como usar essa funcão em outra linguagem, +- na prática ?
Faz pergunta difícil não que eu não estudei :) .
Nunca pensei ( ou precisei )disso, quando uso C é só C, quando uso C++, os próprios cabeçalhos (.h) já cuidam das definições do que em C, depois da sua pergunta fui testar, deve haver uma forma, mas não consegui, enquanto permance uma "questão acadêmica" pode-se procurar com calma, se surgir a necessidade real, temos que apelar (google, koders...).
Pessoal,
Depois de perder algumas noites de sono pensando em como a peripécia de usar métodos de uma linguagem OOP em uma linguagem procedural, eu fui fuçar na net... achei este post em um blog bem interessante:
http://blog.eikke.com/index.php/ikke/2005/11/03/using_c_classes_in_c
Acho que responde à todas as questões pertinentes à integração que comentamos aqui ...
Não testei e acho que nem vou testar... mas o segredo está em se acessar a classe como um ponteiro, pelo pouco que eu entendi ... ahhh e polimorfismo esquece!
Notem também que não dá pra compilar de forma humana sem um bom MakeFile ... e viva o Visual Studio ... Microsoft RULEZ! Quando tiver um tempo vou tentar rodar o exemplo do site do Ikke no VS ...
Por enquanto é isso pessoal ...
[]s PACMAN!
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por