Compiler soll alles compilieren



  • Hi,

    ich habe folgendes Problem.
    Ich benutze die neuste Version von Codeblocks mit MinGW.
    Wenn ich Methoden implementiere diese aber nicht benutze werden diese
    nicht compiliert. Daher auch nicht auf Fehler überprüft.
    Kann ich irgendwie einstellen, dass der Compiler immer alles compiliert?



  • Ich glabue, dass du dich da irrst.

    Ich hab mal ein Testprogramm geschrieben.

    #include <stdio.h>
    
    void test()
    {
      printf("Test");
    }
    
    int main()
    {
      printf("Hello World!");
    
      return 0;
    }
    

    Und beim Disassemblen hab ich aber die Funtion test gefunden

    00401290 <_test>:
      401290:	55                   	push   %ebp
      401291:	89 e5                	mov    %esp,%ebp
      401293:	83 ec 08             	sub    $0x8,%esp
      401296:	c7 04 24 00 30 40 00 	movl   $0x403000,(%esp)
      40129d:	e8 7e 05 00 00       	call   401820 <_printf>
      4012a2:	c9                   	leave  
      4012a3:	c3                   	ret
    

    mfg bauerb



  • imho haut der das mit -O1,2,3,s alles raus. ohne O-switch oder -O0 sollte er alles compilieren



  • Imho tut das nicht der Compiler sondern der Linker.

    Und auch mit allen O-Compilerflags bleibt die Funktion drinnen. (Verwende auch MinGW)



  • Ich habe jetzt alle Optimierungen ausgeschaltet, aber trotzdem
    wird die Methode nich compiliert. 😞



  • Hi!

    Ist die Funktion in einem separaten File? Wird das File dazugelinkt?

    mfg bauerb



  • mingwuser schrieb:

    Ich benutze die neuste Version von Codeblocks mit MinGW.
    Wenn ich Methoden implementiere diese aber nicht benutze werden diese
    nicht compiliert. Daher auch nicht auf Fehler überprüft.
    Kann ich irgendwie einstellen, dass der Compiler immer alles compiliert?

    Ich hoffe, es stellt sich nicht erst nach 10 Seiten heraus, dass es um Templates gehen soll.
    Kannst du mal ein Minimalbeispiel zeigen?



  • AH!!!

    Ok... Du hättest uns viel Zeit erspart, wenn du gleich gesagt hättest, dass es um Templates geht.

    Bei Templates ist es so, dass nur ausprägungen gemacht werden, wenn bedarf besteht. Wenn du zwar ein Template erstellt hast, aber nicht verwendest, dann gibt es auch keine Ausprägung. Anders, wenn du das gleiche Template in 2 verschiedenen Ausprägungen verwendest, dann gibt es die Klasse (oder Funktion) auch 2 mal. Es ist (bis jetzt) auch nicht möglich ein Template in C und H-File aufzuteilen. Du musst ein Template inkludieren. Es ist zwar schon im Standard drinnen, aber meines wissens kann das bis jetzt nur ein Compiler.

    mfg bauerb



  • leer y entender<

    camper will die möglichkeit dass der OP templates benutzt ausschließen.


Anmelden zum Antworten