[FUG-BR] RES: RES: C/C++
Ok Paulo, neste ponto você esta correto. Abraços, um bom dia. Att. Anderson P. Matos Analista de Suporte Linhares Serviços On-Line Tel: (27) 2103-8100 E-mail: [EMAIL PROTECTED] - Tel.: (27) 2103-8105 Cel: (27) 9936-4186 E-mail: [EMAIL PROTECTED] Messenger: [EMAIL PROTECTED] Skype: andersonpmatos -Mensagem original- De: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Em nome de Paulo Pires Enviada em: sábado, 24 de fevereiro de 2007 23:28 Para: Lista Brasileira de Discussão sobre FreeBSD (FUG-BR) Assunto: Re: [FUG-BR] RES: C/C++ On 2/24/07, Anderson P. Matos - LINHARES ON LINE [EMAIL PROTECTED] wrote: Paulo, a função main nem sempre deve retorna um valor, somente se você quiser, quando a função começa com void, significa que não retorna valor nenhum, e ainda você falou que a função main DEVE retornar um valor inteiro, isso também esta errado, a função pode retornar um char, float, double, usigned float...e mais um monte... Obrigado pela lembrança. Eu já trabalhei com compilador C para outras arquiteturas e outros sistemas operacionais, e já fiz muito void main() -- mas nunca um double main() -- , mas vale o recado para que os outros saibam que em C é possível ter outros tipos de retorno para main() em determinadas situações. Entretanto, note que eu disse que era um erro em C++, que era a linguagem do programa original, e disse explicitamente que não seria indicado como erro em C. Note também que não estamos falando de CP/M-80 ou de alguma dispositivo embarcado usando microPIC, mas de UNIX, onde um comando return dentro de main(), mesmo em C, retorna ao sistema operacional um valor para ser informado como estado de saída do processo, e que esse valor de estado é um inteiro. -- Um abraço. Paulo A. P. Pires ... Qui habet aurem audiat quid Spiritus dicat ecclesiis. - Histórico: http://www.fug.com.br/historico/html/freebsd/ Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd - Histórico: http://www.fug.com.br/historico/html/freebsd/ Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
[FUG-BR] RES: RES: C/C++
Ei Paulo, eu ate achei engraçado quando você escreveu essa frase, posso não ter entendido muito bem, mas o main não retornar um valor é considerado um erro...percebi que durante dois anos que estudei C na faculdade me passaram uma informaçao errada entao. PS. A função main não retornar um valor é considerado um ERRO NÃO-FATAL. Tudo bem, vamos acabar com esse topico por aqui. Um bom dia de trabalho e uma otima semana. Att. Anderson P. Matos Analista de Suporte Linhares Serviços On-Line Tel: (27) 2103-8100 E-mail: [EMAIL PROTECTED] - Tel.: (27) 2103-8105 Cel: (27) 9936-4186 E-mail: [EMAIL PROTECTED] Messenger: [EMAIL PROTECTED] Skype: andersonpmatos -Mensagem original- De: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Em nome de Paulo Pires Enviada em: sábado, 24 de fevereiro de 2007 23:48 Para: Lista Brasileira de Discussão sobre FreeBSD (FUG-BR) Assunto: Re: [FUG-BR] RES: C/C++ On 2/24/07, gethostbyname [EMAIL PROTECTED] wrote: Bom, creio que ele deve estar se referindo ao padrão mais atual da linguagem, C99. O padrão ANSI já está meio obsoleto pelos padrões ISO C89 e C99. Você está fazendo alguma confusão. C89 é ANSI, cujo correspondente ISO (praticamente idêntico, apenas recredenciado) é o C90. Teve um cara que liberou o C Completo e Total na rede um tempo atrás. Puxa, logo o livro do Herbert Schildt, o pior autor de todos os tempos. Não sei se é *o* pior, mas é um cara que claramente escreve sobre o que ele acha que vai lhe render uns trocados. É provável que o compromisso dele seja mais com fazer dinheiro rapidamente do que com a qualidade do que escreve. Nessa linha, o mais lamentável é quando, ao invés de ensinar a linguagem de programação a que se propõe na capa, ele começa a fazer apologia de determinadas tecnologias e de certos fabricantes de software (sobretudo do estado de Washington), talvez a fim de dar impulso a outros de seus livros. PS. A função main não retornar um valor é considerado um ERRO NÃO-FATAL. Eu freqüentemente compilo com -Werror -Wall; existem motivos para que o compilador emita warinings, ou eles não estariam lá. Um exemplo que volta e meia acontece comigo é usar = em lugar de ==; às vezes é intencional e às vezes por distração ou erro de digitação, mas um warning é bem-vindo nos dois casos. Todos sabemos fazer e às vezes somos forçados a fazer bacalhaus no código, mas também sabemos como usar a linguagem para, de forma sintaticamente correta e estilisticamente mais produtiva (no sentido de dar clareza que facilite a manutenção de código no futuro), fazer calar qualquer warning, mesmo quando se usa -pedantic. -- Um abraço. Paulo A. P. Pires ... Qui habet aurem audiat quid Spiritus dicat ecclesiis. - Histórico: http://www.fug.com.br/historico/html/freebsd/ Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd - Histórico: http://www.fug.com.br/historico/html/freebsd/ Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
Re: [FUG-BR] RES: RES: C/C++
On Sun, 25 Feb 2007 12:59:53 -0300 Henrique Berenguel [EMAIL PROTECTED] wrote: Alguém conhece livro bom ou curso bom de c para unix? Os livros dos pais do C são excelentes (2 livros). Tem tanto original (inglês) como traduções, e não são caros. Autores: Brian Kernighan e Dennis Ritchie. -- Ricardo Nabinger Sanchez [EMAIL PROTECTED],wait4.org} Powered by FreeBSD Left to themselves, things tend to go from bad to worse. - Histórico: http://www.fug.com.br/historico/html/freebsd/ Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
Re: [FUG-BR] RES: RES: C/C++
A não ser que você queira escrever um driver ou ajudar no desenvolvimento do kernel do FreeBSD, eu sugiro C++. gethostbyname Henrique Berenguel escreveu: Alguém conhece livro bom ou curso bom de c para unix? -Mensagem original- De: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Em nome de Paulo Pires Enviada em: domingo, 25 de fevereiro de 2007 00:57 Para: Lista Brasileira de Discussão sobre FreeBSD (FUG-BR) Assunto: Re: [FUG-BR] RES: C/C++ On 2/25/07, gethostbyname [EMAIL PROTECTED] wrote: Essa exigência não é apenas da linguagem C++: *ISO/IEC 9899:1999 (E)(c)ISO/IEC* *5.1.2.2.1 Program startup* The function called at program startup is named main. The implementation declares no prototype for this function. It shall be defined **with a return type of int** and with no parameters: *int *main(void) { /*...*/ } or with two parameters (referred to here as argc and argv, though any names may be used, as they are local to the function in which they are declared): *int *main(int argc, char *argv[]) { /*...*/ } or equivalent [ver a Nota]; or in some other implementation-defined manner. *Nota*: Thus, int can be replaced by a typedef name defined as int,or the type of argv can be written as char ** argv, and so on. Eu não se se foi coisa da lista, mas aqui apareceu um monte de asteriscos (acho que você que usou negritos), fazendo parecer ponteiros; eu achei um PDF do padrão através do Google (talvez o mesmo que você achou, em http://www.nirvani.net.nyud.net:8090/docs/ansi_c.pdf), onde vi que eu não estava louco com um bando de ponteiros. :) Mas veja o ponto-e-vírgula antes de or some other implementation-defined manner. Visualmente, acho que outra arrumação poderia aumentar mais a clareza, mas o que entendo é que uma implementação hosted (isto é, aquela que executa em um sistema operacional) pode optar entre retornar int _ou_ alguma outra maneira definida pela implementação. Se optar por int, então deve aceitar int main(void){/*...*/} *e* int main(int argc, char *argv[]){/*...*/}. Mas que o fraseamento e a composição visual não ajudam na clareza, não ajudam mesmo. - Histórico: http://www.fug.com.br/historico/html/freebsd/ Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd