wenn ich versuche, C-Code zu kompilieren, der einen anderen C-Header enthält ich diesen Fehler:Fehler: Funktion deklariert ‚ms_abi‘ wurde hier zuvor erklärt, ohne Aufrufkonvention (Klirren)
x86_64-uefi/../../libk/string.h:9:10: error: function declared 'ms_abi' here was
previously declared without calling convention
KABI int memcmp(const void *d1, const void *d2, uint64_t len);
^
x86_64-uefi/../../libk/string.h:9:10: note: previous declaration is here
Der Compiler ist Klirren und die beteiligten Dateien sind die folgenden:
memcmp.c
#include "../string.h"
KABI int memcmp(const void *d1, const void *d2, uint64_t len) {
const uint8_t *d1_ = d1, *d2_ = d2;
for(uint64_t i = 0; i < len; i += 1, d1_++, d2_++){
if(*d1_ != *d2_) return *d1_ < *d2_ ? -1 : 1;
}
return 0;
}
string.h
#pragma once
#include "systemapi.h"
#include "typedefs.h"
KABI int memcmp(const void *d1, const void *d2, uint64_t len);
systemapi.h
(typedefs definieren nur die uintx_t Typen)
#pragma once
#define KABI __attribute__((ms_abi))
Ein weiterer Header, string.h
enthält, libk.h
#pragma once
#include "string.h"
#include "systemapi.h"
#include "typedefs.h"
Und die Datei, die lib.h enthält und dass Berichte der Fehler beim Kompilieren, main.c
(aber alle Dateien melden den Fehler beim Verbinden mit lib.h
)
Flags des Compilers: -I/usr/include/efi -I/usr/include/efi/x86_64 -I/usr/include/efi/protocol -fno-stack-protector -fpic -fshort-wchar -mno-red-zone -DHAVE_USE_MS_ABI -c main.c -o main.o
@MichaelPetch Ich änderte die Reihenfolge, aber nichts änderte, gleiche Fehlermeldung – Rottenheimer2
Ich habe eine Zweigstelle in meinem GitHub-Projekt erstellt, so dass Sie dies mit mehr Kontext sehen können: https://github.com/TheStr3ak5/CKA/tree/TheStr3ak5- newABI, erstellen Sie einfach diesen Zweig nach der BUILD-Datei und Sie werden die Fehler sehen. – Rottenheimer2
@MichaelPetch yeah du hast recht, es hat meine Probleme gelöst, Danke! – Rottenheimer2