• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

vbmaster

Void on Linux

20 mensagens neste tópico

Pois é... tenho gostado bastante de programar em linux, o ambiente é mais leve, os output's ocupam menos espaço (os meus projects em c++ feitos em vs.net 2003 já levavam uns bons 300MB) e em suma tem funcionado bem.

Já sabia que 'voids' em linux não funcionavam, infelizmente, porque eu prefiro sempre declarar uma função como 'void' por calanzisse, mas cheguei agora a uma parte do meu livro em que começa a falar de void pointers, e penso que estes como no fundo não deixam de ser voids, continuam a não estar acessíveis em linux...

O que me leva a fazer um post é no fundo, perguntar o porquê disto, e saber se há algum IDE ou compilador que aceite voids.... até agora só tenho usado para programar em linux, o gedit com modo de realce c++, e o g++ para compilar.

Fiquem bem :P;):D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

N percebi bem a dúvida... mas funções q retornam void são aceites... podes dar um exemplo em código do que falas?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

São?

Tipo:

#include <iostream>
using namespace std;
void main () {
cout << "Cheiras mal da boca!" << endl;
}

E ele diz, o g++, error: main must return int.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois claro... :D Qq main retorna um inteiro :P (para o sistema saber se acabou ou não com erros)

Qq outra função já pode ser void! :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas em windows eu consigo fazer o código anterior nas boas....

:\

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Hmmm, no DEV-C++ q usa o gcc/g++ dá o mm erro q te dava a ti...

Não sei qual é o compilador do vs.net... o proprio compilador poderá mudar o void para int... o gcc/g++ obriga-te a colocares tudo bem :P (e se for a versão 4 ainda consegue ser mais "chata" q as outras)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O vs.net é um IDE, usa o seu próprio compilador.

Mas então em príncipio não terei problemas em void pointers?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Epá acho q n...

Mas já agora o facto de ser um IDE n quer dizer q usei um compilador da GNU :D O Dev-C++ usa :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois mas esse é free, não estou a ver a MS a ir buscar os compiladores dos outros..

mas ao que me tenho apercebido void é um tipo de varíavel como qualquer outra em c++, porque haveria o linux de não a deixar declarar uma função?

Enfim... já agora... que IDE usas aí em linux, se é que usas IDE.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas afinal há algum problema ou n com o void? O da Main é obvio q n é nenhum problema uma vez q o sistema precisa de saber como o programa terminou!

Eu n uso nenhum IDE... uso apenas emacs e g++ :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu usava o Eclipse que é excelente mas agora estou dividido :P Emacs no portatil e Anjuta (Muito bom mesmo :D adoro é mesmo do meu estilo ) para o PC :D para Windows é o dev-cpp

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O único problema é que o meu livro também não apresenta nenhum pedaço de código completo onde eu possa testar realmente se os void's sempre são suportados e só têm aquela irregularidade na declaração de funções...

Senão já tinha dado feedback... :\

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Hmmm, aposto que não há nenhuma irregularidade... só na main é que n podes fazê-lo e já sabemos porquê! :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Então qualquer outra função que não a main, pode ser void, right?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

boas, o main por definicao retorna int para poder retornar um inteiro pa funcao _start k é o compilador k a mete... esse inteiro por definicao é 0 se tudo correu bem... kk outra funcao pode retornar kk tipo... se declarares uma funcao como retornando void... bem.. tas a dizer "esta funcao nao retorna nada" .... já se disseres k ela retorna void* nao tas a dizer k ela retorna um ponteiro para nada mas sim um ponteiro pa kk coisa... :D

hasta

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ah, ok.

Obrigado a todos pela vossas explicações e paciência... :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

eu tinha ideia que podiamos usar o void... :D mas em casa ainda vou testar...  :hmm:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obviamente, a unika coisa k nao podes fazer com um void e tentares sakar um valor de retorno de uma funcao k "retorna" void... isso no gcc por exemplo vai te dar uma mensagem k e kk coisa como : "void value not ignored as it should be" .. pelo contrario, uma funcao k retorna kk coisa (por exemplo um int) nao somos obrigados a apanhar o valor de retorno... no entanto é considerado boa programacao apanhar e testar os valores de retorno para saber se as funcoes correram bem... é comum as funcoes de sistema retornarem um int k segue a mm convencao k eu disse.. 0 pa tudo bem e != 0 pa kk erro... ou entao negativo para erro e >=0 para ok... isso ja depende da funcao...

fikem

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obviamente, a unika coisa k nao podes fazer com um void e tentares sakar um valor de retorno de uma funcao k "retorna" void...

fikem

eu sei... :dontgetit:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora