| 
					
							
        
    
        
						
			 | 
			
			
					    
					
        
         
          
         
	
            | Gratis software... Fra : Lasse Madsen | 
  Dato :  02-07-04 14:26 |  
  |   
            
 
 Copyright (C) 2004 Lasse Madsen
 
 This program is free software; you can redistribute it and/or
 
 modify it under the terms of the GNU General Public License
 
 as published by the Free Software Foundation; either version 2
 
 of the License, or (at your option) any later version.
 
 This program is distributed in the hope that it will be useful,
 
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 
 GNU General Public License for more details.
 
 You should have received a copy of the GNU General Public License
 
 along with this program; if not, write to the Free Software Foundation,
 
 Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
 
 
 
 
 #include <stdio.h>
 
 void main(void)
 
 {
 
 printf("Hello World");
 
 while (1);
 
 }
 
 
  
            
             |   |   
            
        
 
            
         
           Ivan Johansen (02-07-2004) 
         
	
            | Kommentar Fra : Ivan Johansen | 
  Dato :  02-07-04 16:38 |  
  |   
            Lasse Madsen wrote:
 > 
 > void main(void)
 
 Dette er ikke gyldigt C eller C++. main() returnerer altid int.
 
 Ivan Johansen
  
            
             |   |   
            
        
 
            
         
           Ukendt (02-07-2004) 
         
	
            | Kommentar Fra : Ukendt | 
  Dato :  02-07-04 23:23 |  
  |   
            "Ivan Johansen" <ng6@padowan.REMOVE.dk> skrev i en meddelelse
 > Dette er ikke gyldigt C eller C++. main() returnerer altid int.
 
 Den draft jeg har af C99 er lidt vægelsindet på dette punkt. Dels står der:
 
 5.1.2.2.1 Program startup
 1 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;8) or in some other implementation-defined manner.
 
 samt:
 
 5.1.2.2.3 Program termination
 1 If the return type of the main function is a type compatible with int, a
 return from the
 initial call to the main function is equivalent to calling the exit function
 with the value
 returned by the main function as its argument;9) reaching the } that
 terminates the main
 function returns a value of 0. If the return type is not compatible with
 int, the
 termination status returned to the host environment is unspecified.
 
 Afsnit 5.1.2.2.1 foreskriver at returtypen skal være "int" eller et alias.
 Afsnit 5.1.2.2.3 beskæftiger sig med specialsituationer, hvor returtypen er
 "int" - underforstået, at den ikke behøver være det. I Annex K.1 har vi:
 
 K.1 Unspecified behaviour
 - The termination status returned to the hosted environment if the return
 type of main is not compatible with int (5.1.2.2.3).
 
 
 I det konkrete tilfælde returnerer main() ikke, hvorfor returtypen ikke
 bliver aktuel. Derfor er forbeholdet i K.1 heller ikke aktuelt. Et
 tilsvarende forbehold i annex K.2 er heller ikke aktuelt. Jeg vil derfor
 mene, at man kan argumentere for, at det er udefineret om det konkrete
 eksempel vil compile, men hvis det compiler, så er opførslen ikke
 udefineret.
 
 mvh.
 Martin
 
 
  
            
             |   |   
            
        
 
            
         
            Bertel Brander (02-07-2004) 
         
	
            | Kommentar Fra : Bertel Brander | 
  Dato :  02-07-04 23:35 |  
  |   
            Martin M. Pedersen wrote:
 
 > 5.1.2.2.1 Program startup
 > 1 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
 
 Opførslen er uspecificeret hvis returværden for main ikke er
 kompatibel med en int, uanset om eller hvordan programmet terminerer.
 
 /b
  
            
             |   |   
            
        
 
            
         
             Ukendt (03-07-2004) 
         
	
            | Kommentar Fra : Ukendt | 
  Dato :  03-07-04 00:02 |  
  |  
 
            "Bertel Brander" <bertel@post4.tele.dk> skrev i en meddelelse
 news:40e5e29f$0$289$edfadb0f@dread12.news.tele.dk...
 > > 5.1.2.2.1 Program startup
 > > 1 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
 > Opførslen er uspecificeret hvis returværden for main ikke er
 > kompatibel med en int, uanset om eller hvordan programmet terminerer.
 Det bliver meget en diskussion om kanselli-sprog det her. Lad os starte med
 at blive enige om, at det er noget hø at skrive   
Lad os starte med "It shall be defined". Det betyder jvf. C99 "If a 'shall'
 or 'shall not' requirement that appears outside of a constraint is violated,
 the behavior is undefined." Dvs. at det er udefineret, ikke uspecificeret -
 der skelnes i afsnit 3.18 og 3.19. Er det det samme som ugyldigt? Det er
 ikke decideret forbudt. Er det et conformant program? Måske. En "conforming
 implementation" har lov til at acceptere det, og dermed falder vi ind under
 "A conforming program is one that is acceptable to a conforming
 implementation." i afsnit 4.
 mvh.
 Martin
            
              |   |   
            
        
 
            
         
              Bertel Brander (03-07-2004) 
         
	
            | Kommentar Fra : Bertel Brander | 
  Dato :  03-07-04 00:17 |  
  |  
 
            Martin M. Pedersen wrote:
   "Bertel Brander" <bertel@post4.tele.dk> skrev i en meddelelse
 > news:40e5e29f$0$289$edfadb0f@dread12.news.tele.dk...
 > 
 >>>5.1.2.2.1 Program startup
 >>>1 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
 > 
 >>Opførslen er uspecificeret hvis returværden for main ikke er
 >>kompatibel med en int, uanset om eller hvordan programmet terminerer.
 > 
 > 
 > Det bliver meget en diskussion om kanselli-sprog det her. Lad os starte med
 > at blive enige om, at det er noget hø at skrive   
> 
 Retur værdien for main() er uden tvivl det mest omdiskuterede emne
 inden for C overhovedet.
 For mig at se er det ret enkelt; du citerer selv:
 "It shall be defined with a return type of int", og så er den sådan set 
 ikke længere.
 /b
            
              |   |   
            
        
 
            
         
           Lasse Madsen (04-07-2004) 
         
	
            | Kommentar Fra : Lasse Madsen | 
  Dato :  04-07-04 22:46 |  
  |   
            > Dette er ikke gyldigt C eller C++. main() returnerer altid int.
 
 Ikke i min compiler til embedded mikroprocessorer !
 
 (CodevisionAVR)
 
 M.v.h
 Lasse Madsen
 
 
  
            
             |   |   
            
        
 
            
         
           Bertel Brander (02-07-2004) 
         
	
            | Kommentar Fra : Bertel Brander | 
  Dato :  02-07-04 20:12 |  
  |   
            Lasse Madsen wrote:
 > #include <stdio.h>
 > 
 > void main(void)
 > 
 > {
 > 
 > printf("Hello World");
 > 
 > while (1);
 > 
 > }
 > 
 > 
 
 Imponerende antal fejl i et så simpelt program,
 der skal f.ex. tilføjes en '\n' til printf kaldet,
 eller en fflush(stdout); hvis man vil være nogenlunde
 sikker på at der er nogen der kan se det man har skrevet.
 Håber ikke det er standaren for gratis software...
 
 Jeg har altid foretrukket:
 
 #include <stdio.h>
 #include <stdlib.h>
 
 int main(void)
 {
    while(printf("Hello World\n"));
    return EXIT_SUCCESS;
 }
 
 /b
  
            
             |   |   
            
        
 
            
         
           Bertel Brander (02-07-2004) 
         
	
            | Kommentar Fra : Bertel Brander | 
  Dato :  02-07-04 22:37 |  
  |   
            Bertel Brander wrote:
 > 
 > Jeg har altid foretrukket:
 > 
 Eller:
 
 #include <stdio.h>
 int main(void)
 {
    printf("Hello World\n") && main();
    return 0;
 }
 
 /b
  
            
             |   |   
            
        
 
            
         
            Ukendt (02-07-2004) 
         
	
            | Kommentar Fra : Ukendt | 
  Dato :  02-07-04 23:33 |  
  |   
            "Bertel Brander" <bertel@post4.tele.dk> skrev i en meddelelse
 news:40e5d4ea$0$276$edfadb0f@dread12.news.tele.dk...
 > #include <stdio.h>
 > int main(void)
 > {
 >    printf("Hello World\n") && main();
 >    return 0;
 > }
 
 Den er ikke god i C++ jvf. ISO-14882 (C++98) afsnit 3.6.1:
 
 "The function main shall not be used (3.2) within a program. The linkage
 (3.5) of main is implementation-defined.".
 
 Jeg kender ikke et tilsvarende forbehold i C standarden.
 
 mvh.
 Martin
 
 
 
  
            
             |   |   
            
        
 
            
         
             Bertel Brander (03-07-2004) 
         
	
            | Kommentar Fra : Bertel Brander | 
  Dato :  03-07-04 00:12 |  
  |   
            Martin M. Pedersen wrote:
 > "Bertel Brander" <bertel@post4.tele.dk> skrev i en meddelelse
 > news:40e5d4ea$0$276$edfadb0f@dread12.news.tele.dk...
 > 
 >>#include <stdio.h>
 >>int main(void)
 >>{
 >>   printf("Hello World\n") && main();
 >>   return 0;
 >>}
 > 
 > 
 > Den er ikke god i C++ jvf. ISO-14882 (C++98) afsnit 3.6.1:
 > 
 > "The function main shall not be used (3.2) within a program. The linkage
 > (3.5) of main is implementation-defined.".
 
 Der er ingen stdio.h i C++, så programmet er pr. definition et
 C program.
 
 
 > 
 > Jeg kender ikke et tilsvarende forbehold i C standarden.
 
 Jeg er ret sikker på at der ikke er noget sådan forbehold
 i C-standarden.
 
 /b
  
            
             |   |   
            
        
 
            
         
              Ivan Johansen (03-07-2004) 
         
	
            | Kommentar Fra : Ivan Johansen | 
  Dato :  03-07-04 12:51 |  
  |   
            Bertel Brander wrote:
 > Der er ingen stdio.h i C++, så programmet er pr. definition et
 > C program.
 
 Jo, der er. Table 100 (Annex D.5) i C++ standarden viser at der er en 
 stdio.h i C++. Det anbefales dog at bruge cstdio i stedet med mindre 
 samme program også skal kunne compiles som C.
 
 Ivan Johansen
  
            
             |   |   
            
        
 
            
         
               Bertel Brander (03-07-2004) 
         
	
            | Kommentar Fra : Bertel Brander | 
  Dato :  03-07-04 15:18 |  
  |   
            Ivan Johansen wrote:
 > Bertel Brander wrote:
 > 
 >> Der er ingen stdio.h i C++, så programmet er pr. definition et
 >> C program.
 > 
 > 
 > Jo, der er. Table 100 (Annex D.5) i C++ standarden viser at der er en 
 > stdio.h i C++. Det anbefales dog at bruge cstdio i stedet med mindre 
 > samme program også skal kunne compiles som C.
 
 Jeg lærer noget nyt hver dag. Med hvad er så pointen i at have
 en cstdio ?
 
 /b
  
            
             |   |   
            
        
 
            
         
                Jonas Meyer (03-07-2004) 
         
	
            | Kommentar Fra : Jonas Meyer | 
  Dato :  03-07-04 20:21 |  
  |   
            Bertel Brander wrote:
 > Jeg lærer noget nyt hver dag. Med hvad er så pointen i at have
 > en cstdio ?
 
 Der ligger alle funktionerne i std::
 
 
  
            
             |   |   
            
        
 
            
         
                 Bertel Brander (04-07-2004) 
         
	
            | Kommentar Fra : Bertel Brander | 
  Dato :  04-07-04 00:17 |  
  |   
            Jonas Meyer wrote:
 > Bertel Brander wrote:
 > 
 >> Jeg lærer noget nyt hver dag. Med hvad er så pointen i at have
 >> en cstdio ?
 > 
 > 
 > Der ligger alle funktionerne i std::
 
 "Sjovt" nok er der kun en af mine kompilere, BorlandC,
 der putter funktionerne ind i namespace std::
 
 g++ og Digital Mars har ikke noget imod at man skriver
 std:: foran printf, VisualC++ nægter at kompile
 hvis man gør.
 
 /b
  
            
             |   |   
            
        
 
            
         
           Lasse Madsen (04-07-2004) 
         
	
            | Kommentar Fra : Lasse Madsen | 
  Dato :  04-07-04 22:48 |  
  |   
            Hej
 
 > Imponerende antal fejl i et så simpelt program,
 
 Hov hov !
 
 > der skal f.ex. tilføjes en '\n' til printf kaldet,
 
 Nææ det skal der bestemt ikke ...
 
 > eller en fflush(stdout); hvis man vil være nogenlunde
 > sikker på at der er nogen der kan se det man har skrevet.
 > Håber ikke det er standaren for gratis software...
 
 Kommer an på programmerings miljøet ...
 
 > Jeg har altid foretrukket:
 >
 > #include <stdio.h>
 > #include <stdlib.h>
 >
 > int main(void)
 > {
 >    while(printf("Hello World\n"));
 >    return EXIT_SUCCESS;
 > }
 
 Hvilket aldrig ville fungere (hensigtsmæssigt) på en embedded platform da du
 ikke uden hazard kan retunere fra main ...
 
 M.v.h.
 Lasse
 
 
  
            
             |   |   
            
        
 
            
         
            Bertel Brander (05-07-2004) 
         
	
            | Kommentar Fra : Bertel Brander | 
  Dato :  05-07-04 00:18 |  
  |   
            Lasse Madsen wrote:
 > Hej
 > 
 > 
 >>Imponerende antal fejl i et så simpelt program,
 > Hov hov !
 
 Bare rolig, jeg har set programmer med _mange_
 flere fejl pr linie.
 
 > 
 > 
 >>der skal f.ex. tilføjes en '\n' til printf kaldet,
 > 
 > Nææ det skal der bestemt ikke ...
 > 
 > 
 >>eller en fflush(stdout); hvis man vil være nogenlunde
 >>sikker på at der er nogen der kan se det man har skrevet.
 >>Håber ikke det er standaren for gratis software...
 > 
 > 
 > Kommer an på programmerings miljøet ...
 
 Ja, hvis man er sikker på at programmet _aldrig_ kommer
 til at køre på en platform hvor det er nødvendigt, kan
 man naturligvis være ligeglad.
 
 > Hvilket aldrig ville fungere (hensigtsmæssigt) på en embedded platform da du
 > ikke uden hazard kan retunere fra main ...
 > 
 
 I et embedded (freestanding) miljø behøver man ikke en main.
 
 /b
  
            
             |   |   
            
        
 
            
         
             Peter Jensen (05-07-2004) 
         
	
            | Kommentar Fra : Peter Jensen | 
  Dato :  05-07-04 11:42 |  
  |   
            Bertel Brander wrote:
 
 >>> Imponerende antal fejl i et så simpelt program,
 >> 
 >> Hov hov !
 > 
 > Bare rolig, jeg har set programmer med _mange_ flere fejl pr linie.
 
 Jeg kommer i tanke om et lille program en troll smed i en anden gruppe
 engang.  Tråden starter her:
 
 <news:3d6111f1.0401261439.75572582@posting.google.com>
 
 Ikke alene er det han prøver at opnå umuligt at gøre på en fornuftig
 måde, men programmet har så mange fejl at man næsten kun kan tro at det
 er lavet sådan med vilje ...
 
 -- 
 PeKaJe
 
 "Microsoft Wheel.  Now with 8 sides for a smoother ride."
    -- The Ghost in the Machine, in COLA
  
            
             |   |   
            
        
 
            
         
              Nicolai Hansen (06-07-2004) 
         
	
            | Kommentar Fra : Nicolai Hansen | 
  Dato :  06-07-04 07:28 |  
  |   
            > <news:3d6111f1.0401261439.75572582@posting.google.com>
 > 
 > Ikke alene er det han prøver at opnå umuligt at gøre på en fornuftig
 > måde, men programmet har så mange fejl at man næsten kun kan tro at det
 > er lavet sådan med vilje ...
 
 //dont need any other headers because glibc is automatically there!  See gnu.org
 //i forget why. The manual is too long to waste time reading it.
 
 Hans egen kommentar siger vist alt ;)
  
            
             |   |   
            
        
 
    
 
					
					 
			 | 
			
				
        
			 |