windows - bruger C varargs et søgeord kaldet 'end'?

Indlæg af Hanne Mølgaard Plasc

Problem



Undskyld at forstyrre nogen med, hvad der kan være et dumt spørgsmål:


Jeg har en masse kode, der bruger C-stil variabel argumenter. Koden går i en variabel kaldet end i slutningen af ​​vores funktionsopkald med variabel længde. Og .... koden har også en opregner kaldet end . Indtil videre har de ikke slået sammen (kompilatorfejl siger, at den har en tvetydig definition: Det fortæller mig ikke, hvor den mystiske anden 'ende' er defineret), indtil jeg skiftede til vc 10.0-kompilatoren (VS 2010).


Så er end en form for reserveret søgeord, der bruges specielt i variable args?
Jeg ved meget lidt om dem. Men jeg har kigget på tonsvis af dokumentation om variable argumenter såvel som at søge her og fandt intet (hvilket kunne være en god ting). Så jeg vil gætte, at svaret er, at end ikke er en Specialord bruges med varargs. Kan jeg få nogen til at bekræfte dette?


Tak

Bedste reference


Nej - C definerer ikke end som en særlig betydning med vararg. Når du skriver en funktion, der indeholder en variabel argumentliste, er det up to you at bestemme, hvordan man fortæller hvor lang tid der er på en liste er blevet bestået. Nogle populære er, at det første argument specificerer (i hvert fald indirekte) hvor mange flere argumenter der er, og passerer en 'sentinel' -værdi (fx NULL) efter alle de andre. For et par eksempler gør printf den førstnævnte, execl sidstnævnte.

Andre referencer 1


For en tid siden (7. Udgave Unix, for eksempel) var der tre eksterne symboler defineret: etext, edata og end. Disse svarede til den øverste adresse på koden, de initialiserede data og bunken. Det kan være, at din definition af end kolliderer med det på en eller anden måde.