Nur Methoden inkludieren
-
ich wollte spezielle berechnungs funktionen in einer separaten cpp Datei haben, diese inkludieren ins main projekt um dort die Funktionen benutzen zu können ohne eine extra klasse zu initialisieren
-
Konrad Rudolph schrieb:
Nein, ist nicht möglich. Aber aus Neugier: wozu sollte man das brauchen?
Doch das geht !
-
und wie?
-
Kuckuck !

// methods.h #include <iostream> using namespace std; #ifndef _MY_METHODS_H #define _MY_METHODS_H #ifdef __cplusplus extern "C" { #endif void my_method_1( void ) { cout << "aha ! " << endl; } #ifdef __cplusplus } #endif #endif // _MY_METHODS_H// main.cpp #include "methods.h" int main() { my_method_1(); return 0; }
-
Das extern kann man auch weglassen.
#include <iostream> using namespace std; #ifndef _MY_METHODS_H #define _MY_METHODS_H void my_method_1( void ) { cout << "aha ! " << endl; } #endif // _MY_METHODS_H
-
funzt thx
-
Dragonfire schrieb:
funzt thx

-
LOL Ich hatte das total falsch verstanden.
-
nur die using declaration sollte da raus. ist unfein, sowas in nen header zu schreiben.
-
nen einfaches
#ifndef MY_METHODS_H__INCLUDED // strich davor gehört nicht dir sondern dem Compiler -.- #define MY_METHODS_H__INCLUDED #include <iostream> void my_method(){ std::cout << "my_method!" << std::endl; } #endif // MY_METHODS_H__INCLUDED
-
thordk schrieb:
nur die using declaration sollte da raus. ist unfein, sowas in nen header zu schreiben.
Wo schreibt man denn überhaupt die using - Anweisungen rein und was spricht gegen eine Header-Datei ?
... wer nicht fragt bleibt dumm !

-
die using anweisung gilt für den gesamten scope, in dem sie steht. wenn du also using "frei" in eine header datei schreibst, gilt diese using anweisung auch für jede datei, die diesen header inkludiert. das kann zu unerwünschten nebeneffekten führen. deshalb sollte der header frei von sowas sein oder es in geschlossene scopes kapseln. ansonsten using nur in cpp dateien.
-
wer wie was ... schrieb:
thordk schrieb:
nur die using declaration sollte da raus. ist unfein, sowas in nen header zu schreiben.
Wo schreibt man denn überhaupt die using - Anweisungen rein und was spricht gegen eine Header-Datei ?
Man schreibt sie in Implementierungs- (cpp-) Dateien. Wenn man sie in den Header schreibt, gilt das 'include' überall dort, wo der Header eingebunden wird, auch wenn das nicht beabsichtigt ist. Das kann zu nicht lösbaren Namenskonflikten führen, wenn man Namen aus diesem Namensbereich neudefinieren möchte.
-
sollte aber folgendes gehen

#if !defined(MY_HEADER_H__INCLUDED) #define MY_HEADER_H__INCLUDED #if (_MSC_VER > 1000) #pragma once #endif (_MSC_VER > 1000) #include <iostream> namespace my { using namespace std; void function() { cout << "function()" << endl; } }; #endif // MY_HEADER_H__INCLUDED...
-
Hallo,
1. wenn man schon Funktionen in einem Header definiert, dann sollten selbige als inline deklariert werden (oder alternativ static). Nur so kann man die Funktionen dann auch in mehr als einer Übersetzungseinheit verwenden.2. Weder (Namespace) using-Deklarationen noch using-Direktiven gehören in einen Header. Das gilt genauso für Sachen wie:
namespace my { using namespace std; void function() { cout << "function()" << endl; } };Die Tatsache, dass die using-Direktive in einem Namespace steht, macht die Situation nicht besser. Da Namespaces erweitert werden können, kann eine solche using-Direktive weiterhin dazu führen, dass die Bedeutung eines Programms von der include-Reihenfolge abhängt - keine gute Sache.
-

-
wer wie was ... schrieb:
Wo schreibt man denn überhaupt die using - Anweisungen rein und was spricht gegen eine Header-Datei ?
Wieso sollte man die irgendwohin schreiben?
Using namespace bracht man überhaupt nicht das andere using (using std::cout) macht vielleicht elegentlich noch Sinn.
-
natürlich man kann in c++ auch normale globale Funktionen deklarieren und definieren.Es ist zwar nicht schön, aber manchmal ist es nötig
"namespace" ist nicht für alle plattforme zugängig
-
darthdespotism schrieb:
wer wie was ... schrieb:
Wo schreibt man denn überhaupt die using - Anweisungen rein und was spricht gegen eine Header-Datei ?
Wieso sollte man die irgendwohin schreiben?
Aus Bequemlichkeit. Was spricht dagegen?