gerais sao:#ifdef nome_da_macrosequencia_de_declaracoes#endifA sequencia de declaracoes sera compilada apenas se o nome da macro estiver definido.A diretiva de compilacao #endif e util para definir o fim de uma sequencia de declaracoes paratodas as diretivas de compilacao condicional. As linhas#define PORT_0 0x378.../* Linhas de codigo qualquer... */...#ifdef PORT_0#define PORTA PORT_0#include "../sys/port.h"#endifdemonstram como estas diretivas podem ser utilizadas. Caso PORT_0 tenha sidopreviamente definido, a macro PORTA e definida e o header file port.h e incluido.A Diretiva ifndefA diretiva #ifndef funciona ao contrario da diretiva #ifdef. Sua forma geral e:#ifndef nome_da_macrosequencia_de_declaracoes#endifA sequencia de declaracoes sera compilada se o nome da macro nao tiver sido definidoA Diretiva ifA diretiva #if tem a seguinte forma geral:#if expressao_constantesequencia_de_declaracoes#endif69A sequencia de declaracoes sera compilada se a expressao-constante for verdadeira. Emuito importande ressaltar que a expressao fornecida deve ser constante, ou seja, nao deveter nenhuma variavel.A Diretiva elseA diretiva #else tem a seguinte forma geral:#if expressao_constantesequencia_de_declaracoes#elsesequencia_de_declaracoes#endifEla funciona como seu correspondente, o comando else.Imagine que voce esteja trabalhando em um sistema, e deseje que todo o codigo possaser compilado em duas diferentes plataformas (i.e. Unix e Dos). Para obter isto, voce"encapsula" toda a parte de entrada e saida em arquivos separados, que serao carregados deacordo com o header file carregado. Isto pode ser facilmente implementado da seguinte forma:#define SISTEMA DOS.../*linhas de codigo..*/...#if SISTEMA == DOS#define CABECALHO "dos_io.h"#else#define CABECALHO "unix_io.h"#endif#include CABECALHOA Diretiva elifA diretiva #elif serve para implementar a estrutura if-else-if. Sua forma geral e:#if expressao_constante_1sequencia_de_declaracoes_1#elif expressao_constante_2sequencia_de_declaracoes_2#elif expressao_constante_3sequencia_de_declaracoes_3...#elif expressao_constante_nsequencia_de_declaracoes_n#endifO funcionamento desta estrutura e identico ao funcionamento apresentadoanteriormente.70Capitulo . 8 (Entradas e Saidas Padronizadas)IntroducaoO sistema de entrada e saida da linguagem C esta estruturado na forma de umabiblioteca de funcoes. Ja vimos algumas destas funcoes, e agora elas serao reestudadas. Novasfuncoes tambem serao apresentadas.Nao e objetivo deste curso explicar, em detalhes, todas as possiveis funcoes da bibliotecade entrada e saida do C. A sintaxe completa destas funcoes pode ser encontrada no manual doseu compilador. Alguns sistemas trazem uma descricao das funcoes na ajuda do compilador,que pode ser acessada "on line". Isto pode ser feito, por exemplo, no Rhide.Um ponto importante e que agora, quando apresentarmos uma funcao, vamos, emprimeiro lugar, apresentar o seu prototipo. Voce ja deve ser capaz de interpretar asinformacoes que um prototipo nos passa. Se nao, deve voltar a estudar a aula sobre funcoes.Outro aspecto importante, quando se discute a entrada e saida na linguagem C e oconceito de fluxo. Seja qual for o dispositivo de entrada e saida (discos, terminais, teclados,acionadores de fitas) que se estiver trabalhando, o C vai enxerga-lo como um fluxo, que nadamais e que um dispositivo logico de entrada ou saida. Todos os fluxos sao similares em seufuncionamento e independentes do dispositivo ao qual estao associados. Assim, as mesmasfuncoes que descrevem o acesso aos discos podem ser utilizadas para se acessar um terminalde video. Todas as operacoes de entrada e saida sao realizadas por meio de fluxos.Na linguagem C, um arquivo e entendido como um conceito que pode ser aplicado aarquivos em disco, terminais, modens, etc ... Um fluxo e associado a um arquivo atraves darealizacao de uma operacao de abertura. Uma vez aberto, informacoes