| 
					
							
        
    
        
						
			 | 
			
			
					    
					
        
         
          
         
	
            | variable Fra : Søren Jensen | 
  Dato :  19-01-05 14:27 |  
  |   
            hej
 
 Et lille spørgsmål.
 
 Jeg er ved at lave et program til en mikroprocessor, programmet er bygget på 
 af en masse funktioner med en masse variabler.
 De fleste af variablene, skal bruges af funktioner der ikke er placeret i de 
 samme c filer.
 
 Også er mit spørgsmål? hvordan tilgår man smartes de forskellige variable, 
 når man nu ikke bruger globale variable..
 
 Man kan jo lave en funktion, til at overføre en variable eller en pointer 
 til en variable.
 
 På forhånd tak...
 
 
 
 
 
  
            
             |   |   
            
        
 
            
         
           Brian Axelgaard (19-01-2005) 
         
	
            | Kommentar Fra : Brian Axelgaard | 
  Dato :  19-01-05 14:54 |  
  |   
            "Søren Jensen" <x@x.xxx> skrev i en meddelelse
 news:41ee6077$0$33702$edfadb0f@dread16.news.tele.dk...
 > De fleste af variablene, skal bruges af funktioner der ikke er placeret i
 de
 > samme c filer.
 > Også er mit spørgsmål? hvordan tilgår man smartes de forskellige variable,
 > når man nu ikke bruger globale variable..
 
 På en PIC16 mener jeg at man skal erklære variablen i både "main" c-filen og
 hvor den bruges. Den skal dog ikke erklæres med samme datatype, men med
 extern.
 Det er i hvert fald som jeg husker det lige nu :)
 
 
  
            
             |   |   
            
        
 
            
         
           Søren Jensen (19-01-2005) 
         
	
            | Kommentar Fra : Søren Jensen | 
  Dato :  19-01-05 15:49 |  
  |   
            >> De fleste af variablene, skal bruges af funktioner der ikke er placeret i
 > de
 >> samme c filer.
 >> Også er mit spørgsmål? hvordan tilgår man smartes de forskellige 
 >> variable,
 >> når man nu ikke bruger globale variable..
 >
 > På en PIC16 mener jeg at man skal erklære variablen i både "main" c-filen 
 > og
 > hvor den bruges. Den skal dog ikke erklæres med samme datatype, men med
 > extern.
 > Det er i hvert fald som jeg husker det lige nu :)
 
 Det var også for at undgå at skulle erklære variablen mere end en gang.
 
 
  
            
             |   |   
            
        
 
            
         
            Søren Jensen (19-01-2005) 
         
	
            | Kommentar Fra : Søren Jensen | 
  Dato :  19-01-05 15:59 |  
  |   
            
 "Søren Jensen" <x@x.xxx> skrev i en meddelelse 
 news:41ee73a5$0$33631$edfadb0f@dread16.news.tele.dk...
 >>> De fleste af variablene, skal bruges af funktioner der ikke er placeret 
 >>> i
 >> de
 >>> samme c filer.
 >>> Også er mit spørgsmål? hvordan tilgår man smartes de forskellige 
 >>> variable,
 >>> når man nu ikke bruger globale variable..
 >>
 >> På en PIC16 mener jeg at man skal erklære variablen i både "main" c-filen 
 >> og
 >> hvor den bruges. Den skal dog ikke erklæres med samme datatype, men med
 >> extern.
 >> Det er i hvert fald som jeg husker det lige nu :)
 >
 > Det var også for at undgå at skulle erklære variablen mere end en gang.
 >
 >
 
 jeg har overvejet om det er ok at erklærer variablen i h filen (på en måde), 
 således af den er tilgængelig for de filer der inkluder h filen hvori 
 variablen er erklæret. 
 
 
  
            
             |   |   
            
        
 
            
         
             Thorsten Ottosen (19-01-2005) 
         
	
            | Kommentar Fra : Thorsten Ottosen | 
  Dato :  19-01-05 19:12 |  
  |   
            | >> På en PIC16 mener jeg at man skal erklære variablen i både "main" c-filen
 | >> og
 | >> hvor den bruges. Den skal dog ikke erklæres med samme datatype, men med
 | >> extern.
 | >> Det er i hvert fald som jeg husker det lige nu :)
 | >
 | > Det var også for at undgå at skulle erklære variablen mere end en gang.
 | >
 | >
 |
 | jeg har overvejet om det er ok at erklærer variablen i h filen (på en måde),
 | således af den er tilgængelig for de filer der inkluder h filen hvori
 | variablen er erklæret.
 
 du laver en global variable med
 
 extern int foo;
 
 i .h filen. Så definerer du den i en .c/.cpp fil.
 
 Jeg vil foreslå at du ikke tilgår den som global, men bruger den
 som parameter til det functioner, der skal bruge den.
 
 -Thorsten 
 
 
  
            
             |   |   
            
        
 
            
         
              Søren Jensen (20-01-2005) 
         
	
            | Kommentar Fra : Søren Jensen | 
  Dato :  20-01-05 08:03 |  
  |   
            
 "Thorsten Ottosen" <nesotto@cs.auc.dk> skrev i en meddelelse 
 news:41eea2e1$0$48322$14726298@news.sunsite.dk...
 >| >> På en PIC16 mener jeg at man skal erklære variablen i både "main" 
 >c-filen
 > | >> og
 > | >> hvor den bruges. Den skal dog ikke erklæres med samme datatype, men 
 > med
 > | >> extern.
 > | >> Det er i hvert fald som jeg husker det lige nu :)
 > | >
 > | > Det var også for at undgå at skulle erklære variablen mere end en 
 > gang.
 > | >
 > | >
 > |
 > | jeg har overvejet om det er ok at erklærer variablen i h filen (på en 
 > måde),
 > | således af den er tilgængelig for de filer der inkluder h filen hvori
 > | variablen er erklæret.
 >
 > du laver en global variable med
 >
 > extern int foo;
 >
 > i .h filen. Så definerer du den i en .c/.cpp fil.
 
 Her skal man også erklære/definer variablen 2 gange, findes der ikke en måde 
 hvor man kun skal gøre det en gang.
 
 
 
 
  
            
             |   |   
            
        
 
            
         
               Brian Schelde (20-01-2005) 
         
	
            | Kommentar Fra : Brian Schelde | 
  Dato :  20-01-05 08:49 |  
  |   
            "Søren Jensen" <x@x.xxx> wrote in message
 news:41ef57e7$0$33704$edfadb0f@dread16.news.tele.dk...
 > Her skal man også erklære/definer variablen 2 gange, findes der ikke en
 måde
 > hvor man kun skal gøre det en gang.
 Jo, men så skal du tilgå den via en funktion hvor du enten returnerer
 værdien af den eller en pointer til den. Jeg tror ikke der er andre
 muligheder.
 
 
  
            
             |   |   
            
        
 
            
         
                Søren Jensen (20-01-2005) 
         
	
            | Kommentar Fra : Søren Jensen | 
  Dato :  20-01-05 09:47 |  
  |   
            
 "Brian Schelde" <br_sc@hotmail.com> skrev i en meddelelse 
 news:41ef624a$0$48648$edfadb0f@dread15.news.tele.dk...
 > "Søren Jensen" <x@x.xxx> wrote in message
 > news:41ef57e7$0$33704$edfadb0f@dread16.news.tele.dk...
 >> Her skal man også erklære/definer variablen 2 gange, findes der ikke en
 > måde
 >> hvor man kun skal gøre det en gang.
 > Jo, men så skal du tilgå den via en funktion hvor du enten returnerer
 > værdien af den eller en pointer til den. Jeg tror ikke der er andre
 > muligheder.
 
 
 ok nu har jeg accepteret at jeg skal erklærer/definerer variablen 2 gange,
 men min kompiler kommer ikke med en fejl hvis variablen er af to forskellige 
 typer f.eks
 
 void main (void)
 {
     unsigned long VarData = 100;
 
 }
 
 void funktion (void)
 {
     extern unsigned int VarData;
 
 }
 Findes der en mulighed hvorved man kan få kompileren til at "opdage" denne 
 fejl.
 
 
  
            
             |   |   
            
        
 
            
         
                 Niels Dybdahl (20-01-2005) 
         
	
            | Kommentar Fra : Niels Dybdahl | 
  Dato :  20-01-05 10:00 |  
  |   
            > ok nu har jeg accepteret at jeg skal erklærer/definerer variablen 2 gange,
 > men min kompiler kommer ikke med en fejl hvis variablen er af to
 forskellige
 > typer f.eks
 >
 > void main (void)
 > {
 >     unsigned long VarData = 100;
 >
 > }
 >
 > void funktion (void)
 > {
 >     extern unsigned int VarData;
 >
 > }
 > Findes der en mulighed hvorved man kan få kompileren til at "opdage" denne
 > fejl.
 
 Du skal erklære og definere variablen uden for funktionerne:
 
   unsigned long VarData = 100;
   void main (void)
   {  }
 
   extern unsigned int VarData;
   void funktion (void)
   {}
 
 linien med extern opretter ikke en variabel. Den fortæller bare compileren
 at der et andet sted i programmet findes en variabel med det navn.
 
 Niels Dybdahl
 
 
  
            
             |   |   
            
        
 
            
         
                 Thorsten Ottosen (20-01-2005) 
         
	
            | Kommentar Fra : Thorsten Ottosen | 
  Dato :  20-01-05 23:06 |  
  |   
            "Niels Dybdahl" <ndy@fjern.detteesko-graphics.com> wrote in message
 news:41ef7322$0$17406$4d4eb98e@news.dk.uu.net...
 |> ok nu har jeg accepteret at jeg skal erklærer/definerer variablen 2 gange,
 | > men min kompiler kommer ikke med en fejl hvis variablen er af to
 | forskellige
 | > typer f.eks
 | >
 | > void main (void)
 | > {
 | >     unsigned long VarData = 100;
 | >
 | > }
 | >
 | > void funktion (void)
 | > {
 | >     extern unsigned int VarData;
 | >
 | > }
 | > Findes der en mulighed hvorved man kan få kompileren til at "opdage" denne
 | > fejl.
 
 det er en one-definition violation du har der...udefineret opførsel følger.
 
 Anyway, du skal declarare variablen i .h filen og includere denne fil hvor
 variablen måtte bruges---specielt også der hvor du definere vaiablen.
 
 På mine kompilere få jeg disse meddelelser:
 
 Comeau C/C++ 4.3.3 (Oct 25 2003 12:02:26) for MS_WINDOWS_x86
 Copyright 1988-2003 Comeau Computing.  All rights reserved.
 MODE:non-strict warnings C++
 
 "var.cpp", line 3: error #147: declaration is incompatible with "int foo"
           (declared at line 1 of "var.hpp")
   unsigned int foo = 2;
                ^
 Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
 Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
 
 var.cpp
 var.cpp(3) : error C2371: 'foo' : redefinition; different basic types
         e:\C++\libraries\test\var.hpp(1) : see declaration of 'foo'
 
 $ g++ var.cpp
 var.cpp:3: error: conflicting types for `unsigned int foo'
 var.hpp:1: error: previous declaration as `int foo'
 # cc1plus 0.09 0.06
 
 mvh
 
 Thorsten
 
 
 
  
            
             |   |   
            
        
 
    
 
					
					 
			 | 
			
				
        
			 |