Forum: PC-Programmierung Programmabschnitte mit gcc kompilieren


von Paul (Gast)


Lesenswert?

Hallo,

ich programmiere gerade ein plugin für postgres, welches ich aber in C++ 
schreiben möchte. Leider kann der g++ das nötige PG_MODULE_MAGIC-Makro 
nicht kompilieren. Gibt es eine Möglichkeit, dieses mit dem gcc zu 
kompilieren und den Rest mit g++? Gibt es eine Preprozessordirektive, 
die g++ sagt, Programmteile mit gcc zu erstellen?

Gruß
Paul

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Macros werden nicht compiliert, sondern mit Textersetzung im 
Sourcecode verwendet. Wenn Du also ein Macro in Deinem Sourcecode 
verwendest, und der sich deswegen nicht mit Deinem Compiler übersetzen 
lässt, kannst Du nicht "für das Macro" einen anderen Compiler verwenden.

Wie äußert sich denn das "kann nicht kompilieren"? Da werden doch wohl 
Fehlermeldungen ausgegeben werden -- hast Du Dir die schon mal 
angesehen?

von Rolf Magnus (Gast)


Lesenswert?

gcc ist kein C-Compiler, sondern ein Frontend für (unter anderem) C- und 
C++-Compiler.
Mir wäre kein Weg bekann, mitten im Quellcode die Sprache umzuschalten.
Ich weiß nicht, was dieses Makro macht, aber brauchst du das wirklich 
kreuz und quer in deinem ganzen Code?

von Malte (Gast)


Lesenswert?

Separat compilieren, extern "C" für C-Deklarationen im C++-Code nicht 
vergessen, dann alles brav mit einem vom g++ gesteuerten Linkeraufruf 
zusammenlinken.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Malte schrieb:
> Separat compilieren

Ein Macro?!

von Paul (Gast)


Lesenswert?

Super, extern "C" war genau das, was ich suchte. Danke :)

von Rolf Magnus (Gast)


Lesenswert?

Rufus Τ. Firefly schrieb:
> Malte schrieb:
>> Separat compilieren
>
> Ein Macro?!

Den Teil, der das Makro benutzt. Deshalb auch meine Frage, ob dieses 
über den ganzen Code verteilt oder nur an einer einzigen Stelle genutzt 
wird.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.