Hoe de fout "Floating Point Formats Not Linked" in Turbo C / Borland C te repareren

Schrijver: Janice Evans
Datum Van Creatie: 1 Juli- 2021
Updatedatum: 1 Juni- 2024
Anonim
Hoe de fout "Floating Point Formats Not Linked" in Turbo C / Borland C te repareren - Knowledges
Hoe de fout "Floating Point Formats Not Linked" in Turbo C / Borland C te repareren - Knowledges

Inhoud

Andere secties

Ben je ooit de "drijvende-komma-indelingen niet gelinkt" fout in een C- of C ++ -programma? Hieronder wordt de reden voor deze fout gegeven en ook de oplossing ervoor. Let op: de gebruikte compiler is Turbo C / Borland C.

Stappen

Analyseer de volgende programmalijst en na het succesvol bouwen van het programma, verschijnt de bovengenoemde runtime-fout.

Programma een

  1. Programma met een hieronder.
    • int main () {
      struct STUDENT {
      int rollno;
      char stdname;
      zwevende percentage;
      } * s1;
      printf (" Voer studentgegevens in:");
      scanf ("% d% s% f",
      & s1-> rollno,
      s1-> stdname,
      & s1-> percentage);
      printf (" nDe ingevoerde gegevens zijn:");
      printf ("Rol:% d, naam:% s, percentage:% f",
      s1-> rollno,
      s1-> stdname,
      s1-> percentage);
      getch ();
      retourneer 0;
      }
    • Het bovenstaande C-programma is geschreven en gecompileerd in Turbo C. Wanneer dit programma wordt uitgevoerd, geeft de compiler de volgende fout weer:
      Scanf: drijvende-komma-formaten niet gekoppeld en het programma wordt abnormaal beëindigd.
    • Dit gebeurt vanwege de variabele * s1, die een verwijzing is naar de structuur "STUDENT", waarin de programmeur een "float" -variabele met de naam "percentage" had gedefinieerd. Het betekent dat er een fout is gevonden toen het programma probeerde een waarde voor het gegevenstype zwevend te lezen met behulp van een aanwijzer om te structureren. Wanneer het programma wordt uitgevoerd, toont de compiler een runtime-fout bij de regel scanf ("% f", ...% s1-> percentage).
    • Het kan gebeuren als we Borland C / C ++ of TurboC / C ++ als compiler gebruiken. "Drijvende-komma-indelingen niet gelinkt" is een Borland-runtime-fout (Borland C of C ++, Turbo C of C ++). De compilers van Borland linken niet in de drijvende-kommabibliotheek (f-p) tenzij we die nodig hebben. Daarom moeten we met geweld een drijvende-kommafunctie (f-p) toevoegen als we "% f" of andere drijvende-komma-indelingen (f-p) hebben in de aanroepen van scanf () of printf ().

  2. Om deze fout op te lossen, roept u een drijvende-kommafunctie (f-p) aan of voegt u gewoon een link toe van een bestand dat ten minste één drijvende-kommafunctie (f-p) bevat. Om dit te doen, zou een hackachtige oplossing kunnen zijn om een ​​dummy-functie ergens in een bronbestand te definiëren, maar deze niet te noemen:
    • leegte dummy (float * a) {
      zweven b = * a; // voer een zwevende toegang uit
      dummy (& b); // een drijvende-kommafunctie aanroepen
      }
    • Het hoeft niet in een module met het hoofdprogramma te staan, zolang het maar in een module zit die in de link wordt opgenomen. Daarom moet het bovenstaande programma als volgt worden geschreven:

Programmalijst twee


  1. Programma met twee hieronder.
    • leegte dummy (float * a) {
      zweven b = * a; // voer een zwevende toegang uit
      dummy (& b); // een drijvende-kommafunctie aanroepen
      }
      int main () {
      struct STUDENT {
      int rollno;
      char stdname;
      zwevende percentage;
      } * s1;
      printf (" Voer studentgegevens in:");
      scanf ("% d% s% f",
      & s1-> rollno,
      s1-> stdname,
      s1-> percentage);
      printf (" nDe ingevoerde gegevens zijn:");
      printf ("Rol:% d, naam:% s, percentage:% f",
      s1-> rollno,
      s1-> stdname,
      s1-> percentage)
      getch ();
      retourneer 0;
      }
    • In het bovenstaande programma is "dummy" een door de gebruiker gedefinieerde functie. U kunt deze functie een willekeurige naam geven in plaats van "dummy". Evenzo zijn "a" en "b" variabelenamen, die u kunt wijzigen.
    • Dit komt doordat Turbo en Borland C / C ++ compilers soms ondersteuning voor drijvende komma weglaten en een niet-drijvende komma versie van printf en scanf gebruiken om ruimte te besparen op kleinere systemen. De dummy-aanroep naar een drijvende-kommafunctie dwingt de compiler om de drijvende-kommadrager te laden en het oorspronkelijke probleem op te lossen.

  2. Een schonere optie is om het linken van drijvende-kommabibliotheken in Turbo C / C ++ of Borland C / C ++ in te schakelen vanuit linkeropties voor bibliotheek om drijvende-komma op te nemen.

Vragen en antwoorden van de gemeenschap


Tips

Andere ectie Poriai i een vrij veel voorkomende huidziekte die ervoor zorgt dat de huid van een peroon 'opvlamt' in rode, jeukende en om chilferende plekken. Hoewel deze aandoening niet levenb...

Andere ectie Zoal de meete zakenmenen hebben politici niet veel tijd om klachtenbrieven van kiezer te lezen of erop te reageren. Uw brief of e-mail wordt waarchijnlijk in eerte intantie gelezen door e...

Populair Vandaag