Hi, wollte mal fragen wie denn das Adjektiv zu Templates heißt (auf englisch templated)??? Templatisiert?!? Bei google findet man das zwar öfter, aber irgendwie finde ich, dass sich das doch sehr nach Denglisch anhört. Schreibe gerade meine Masterthesis und finde das hört sich irgendwie nicht wirklich wissenschaftlich an. Habt ihr bessere Vorschläge?! Es geht vor allem um den Satz: Dass die Parameter NR_OF_SIs, NR_OF_MIs, SI_BW und MI_BW nicht auch über den Konstruktor übergeben werden, liegt an der Gegebenheit, dass diese bei der Deklaration der templatisierten Socketinstanzen vom Typ simple_target_socket_tagged und simple_initiator_socket_tagged vom Präprozessor benötigt werden. Macht der Satz so überhaupt Sinn für einen Außenstehenden? Ich weiß persönlich halt was ich meine, aber ob das jmd anderes versteht? Bin für alle Vorschläge dankbar! Gruß
Statt "templatisiert" vielleicht "mittels eines Templates realisiert/implementiert" verwenden?
oder "templatebasiert"? Das wäre etwas kürzer; der Satz ist eh ziemlich überladen.
oder so:
> ... dass diese bei der Deklaration der templatisierten Socketinstanzen ...
... dass diese bei der Deklaration der Template-basierten
Socketinstanzen ...
... Klaus Wachtler schrieb ... Geichzeitig ein Gedanke, nur anders geschrieben.
> liegt an der Gegebenheit
wie ist denn so die Gegebenheit? Eckig, rund, etwas wie eine Wiese oder
doch eine Mauer? Hast du die verlötet?
Würd' mal so vorschlagen:
Die Parameter NR_OF_SIs, NR_OF_MIs, SI_BW und MI_BW werden nicht über
den Konstruktor übergeben werden, sondern bei der Deklaration der
Socketinstanzen. ....
Hi, danke schon mal für eure Tips. Okay templatebasiert hört sich doch schon einiges besser an :) @ Klaus, ja da muss ich dir zustimmen. Habe gerade beim Durchlesen auch gedacht, dass da ziemlich viel Information in einem Satz steckt. So besser? : Die Parameter NR_OF_SIs, NR_OF_MIs, SI_BW und MI_BW werden hingegen nicht über den Konstruktor übergeben, da sie schon bei der Deklaration der templatebasierten Socketinstanzen vom Präprozessor benötigt werden. Gruß Stefan
Das "hingegen" schreit nach einem "sondern", etwa: Die Parameter NR_OF_SIs, NR_OF_MIs, SI_BW und MI_BW werden hingegen nicht über den Konstruktor übergeben, sondern schon bei [....], da sie der Präprozessor bei der Deklaration der templatebasierten Socketinstanzen benötigt.
@ Zwie: Danke auch für den Tip! Hm davor beschreibe ich eben die restlichen Parameter, die alle in einer Struktur gekapselt über den Konstruktor übergeben werden. Nun will ich halt erklären, warum ausgerechnet diese vier Variablen mit Templates definiert werden. Deshalb halt das hingegen... Aber gut glaub das hingegen kann ich auch einfach weglassen. glaube dann müsste es so einigermaßen passen.
Wenn es schon um eine Masterarbeit geht: "templatisiert" wäre dann ein Partizip. ;-)
Zwie Blum schrieb: > Die Parameter NR_OF_SIs, NR_OF_MIs, SI_BW und MI_BW werden hingegen > nicht über den Konstruktor übergeben, sondern schon bei [....], da sie > der Präprozessor bei der Deklaration der templatebasierten > Socketinstanzen benötigt. Das ist fachlich falsch! Zzumindest, wenn es um c++ geht. Da hat der Präprozessor mit Templates nichts zu tun, das ist Sache des Kompilers.
@ Vlad Ja es geht um C++. Also: das sie schon bei der[...]vom Compiler benötigt werden? gruß und Danke!
S. F. schrieb: > @ Vlad > > Ja es geht um C++. Also: > > das sie schon bei der[...]vom Compiler benötigt werden? > > gruß und Danke! Übersetzung, Compilierung, Code-Erzeugung? Nimmt man es beim anderen Satz "dass diese bei der Deklaration der templatisierten Socketinstanzen vom Typ simple_target_socket_tagged und simple_initiator_socket_tagged vom Präprozessor benötigt werden." ganz genau, müsste es eigentlich "dass diese (vom Compiler, zur Code-Erzeugung) bei der Instantiierung der generischen Socketklassen vom Typ... benötigt werden" heißen.
Hi, ich dachte bis jetzt dass beispielsweise in meinem Fall tlm_utils::simple_initiator_socket_tagged<interconnect_component,SI_BW,t lm::tlm_base_protocol_types>* SI_read; als Deklaration bezeichnet wird und SI_read = new tlm_utils::simple_initiator_socket_tagged<interconnect_component,SI_BW,t lm::tlm_base_protocol_types>[NR_OF_SIs]; als die Definition. Zumindest ist die Bezeichnung bei Visual Studio so. Und meiner Ansicht nach ist beides zusammen die Instanziierung eines Members. Bitte korrigiert mich, wenn ich daneben liege! Gruß & Danke vielmals!
S. F. schrieb: > SI_read = new > tlm_utils::simple_initiator_socket_tagged<interconnect_component,SI_BW,t lm::tlm_base_protocol_types>[NR_OF_SIs]; ist die instanzierung bei funktionen differenziert man zwischen deklaration und definition int foo(bool bar); ist die deklaration int foo(bool bar) { return bar*bar; } ist die definition.
Okay alles klar vielen Dank. Im Visual Studio gibt es die Bezeichnung Deklaration und Definition nämlich auch für Members (so wie ich es oben beschrieben habe) Aber gut, dann wäre das ja jetzt geklärt! Gruß Stefan
Hi, ich dachte bis jetzt dass beispielsweise in meinem Fall
1 | tlm_utils::simple_initiator_socket_tagged<interconnect_component,SI_BW,tlm::tlm_base_protocol_types>* |
2 | SI_read; |
> als Deklaration bezeichnet wird und
Das ist eine Definition, wobei jede Definition auch gleichzeitig eine
Deklaration ist.
1 | SI_read = new tlm_utils::simple_initiator_socket_tagged<interconnect_component,SI_BW,tlm::tlm_base_protocol_types>[NR_OF_SIs]; |
> als die Definition. Nein, das ist keine Defininiton. Es ist eine Instanziierung und eine Zuweisung. > Und meiner Ansicht nach ist beides zusammen die Instanziierung eines > Members. Der zweite Teil ist die Instanziierung eines namenlosen dynamischen Objekts (keines Members), dessen Adresse an SI_read zugewiesen wird. Wenn SI_read also ein Member sein sollte, ist es höchstens eine Member-Zuweisung.
Hi Rolf, vielen Dank für die ausführliche Erklärung! Das Problem ist, dass ich teilweise das Gefühl habe, dass viele Leute unterschiedliche Ansichten darüber haben. Zumindest war es so bei mir an der FH. Viele verwenden die Begrifflichkeiten, aber keiner zu 100% sicher. So wundere ich mich auch dass es bei Visual Studio so ist. Wenn ich irgendwo im Code auf eine Instanz der Sockets rechts klicke, und "gehe zu Deklaration" auswähle, dann springt er in die Zeile
1 | tlm_utils::simple_initiator_socket_tagged<interconnect_component,SI_BW,tlm::tlm_base_protocol_types>* |
2 | SI_read; |
Wenn ich das gleiche mache, aber dann "gehe zu Definition" klicke, springt er in die Zeile
1 | SI_read = new tlm_utils::simple_initiator_socket_tagged<interconnect_component,SI_BW,tlm::tlm_base_protocol_types>[NR_OF_SIs]; |
Gruß
S. F. schrieb: > vielen Dank für die ausführliche Erklärung! Das Problem ist, dass ich > teilweise das Gefühl habe, dass viele Leute unterschiedliche Ansichten > darüber haben. Was ich geschrieben hab, ist das, was ISO-C++ dazu zu sagen hat. > Wenn ich irgendwo im Code auf eine Instanz der Sockets rechts klicke, > und "gehe zu Deklaration" auswähle, dann springt er in die Zeile > tlm_utils::simple_initiator_socket_tagged<interconnect_component,SI_BW,t lm::tlm_base_protocol_types>* > SI_read; > > > Wenn ich das gleiche mache, aber dann "gehe zu Definition" klicke, > springt er in die Zeile > > SI_read = new tlm_utils::simple_initiator_socket_tagged<interconnect_component,SI_BW,t lm::tlm_base_protocol_types>[NR_OF_SIs]; Interessant. Microsoft hat's allerdings ganz allgemein nicht so mit der richtigen Verwendung von Begriffen. Die haben auch schon nicht verstanden, was eine Bitmap eigentlich ist.
Rolf Magnus schrieb: > S. F. schrieb: > >> vielen Dank für die ausführliche Erklärung! Das Problem ist, dass ich >> teilweise das Gefühl habe, dass viele Leute unterschiedliche Ansichten >> darüber haben. > > Was ich geschrieben hab, ist das, was ISO-C++ dazu zu sagen hat. > >> Wenn ich irgendwo im Code auf eine Instanz der Sockets rechts klicke, >> und "gehe zu Deklaration" auswähle, dann springt er in die Zeile >> > tlm_utils::simple_initiator_socket_tagged<interconnect_component,SI_BW,t lm::tlm_base_protocol_types>* >> SI_read; >> >> >> Wenn ich das gleiche mache, aber dann "gehe zu Definition" klicke, >> springt er in die Zeile >> >> SI_read = new > tlm_utils::simple_initiator_socket_tagged<interconnect_component,SI_BW,t lm::tlm_base_protocol_types>[NR_OF_SIs]; > > Interessant. Microsoft hat's allerdings ganz allgemein nicht so mit der > richtigen Verwendung von Begriffen. Die haben auch schon nicht > verstanden, was eine Bitmap eigentlich ist. Auch die Bezeichnungen von MS sind richtig, da es in C/C++ mehrere Varianten gibt und alles zusammengefasst werden kann:
1 | // Deklarationen
|
2 | void aFunction(int aParameter); |
3 | extern Object anObject; |
4 | extern Object *anObjectPtr; |
5 | |
6 | // Definitionen
|
7 | typedef aType typeName; |
8 | void aFunction(int aParameter) { |
9 | }
|
10 | |
11 | // Deklaration und Definition
|
12 | Object *anObjectPtr; |
13 | // laut Standard ist das eine Zeiger-Deklaration und eine Definition,
|
14 | // da Speicher für ein Objekt vom Typ Zeiger auf Object reserviert wird
|
15 | |
16 | // Deklaration, Definition und Instantiierung, wenn es eine Klasse ist
|
17 | Object anObject; |
18 | |
19 | // Instantiierung
|
20 | *anObjectPtr = new Object(); // Instantiierung |
Arc Net schrieb: > // Instantiierung > *anObjectPtr = new Object(); // Instantiierung hier ist der Stern zuviel. Außerdem gehört der Stern bei der Definition an den Typ ;-P
Arc Net schrieb: > // Instantiierung > *anObjectPtr = new Object(); // Instantiierung Eben. Speziell das ist nur eine Instantiierung und keine Definition und auch keine Deklaration. Laut S. F. nennt Visual Studio es aber "Definition".
Rolf Magnus schrieb: > Arc Net schrieb: > >> // Instantiierung >> *anObjectPtr = new Object(); // Instantiierung > > Eben. Speziell das ist nur eine Instantiierung und keine Definition und > auch keine Deklaration. Laut S. F. nennt Visual Studio es aber > "Definition". Laut aktuellem ISO-C++-Draft (http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3092.pdf) 7 Absatz 8 "An object declaration, however, is also a definition unless it contains the extern specifier and has no initializer (3.1). A definition causes the appropriate amount of storage to be reserved and any appropriate initialization (8.5) to be done." C99 6.7 Absatz 5 "A declaration specifies the interpretation and attributes of a set of identifiers. A definition of an identifier is a declaration for that identifier that: — for an object, causes storage to be reserved for that object;"
Ah okay super vielen Dank!!!! Jetzt ists klar. Mal wieder super, dass unser Prof das in der Vorlesung nie erwähnt hat :) Gruß Stefan
Da Template ja im Deutschen Schablone heisst, würde ich "schablonisiert" vorschlagen. Iwan
Иван S. schrieb: > würde ich "schablonisiert" > vorschlagen. "schablonisieren" oder besser "schablonieren" ... ist aber verdächtig nahe an "schwadronieren" dran ...
@Arc Net: Diese Ausschnitte haben irgendwie nichts mit der besagten Codezeile zu tun.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.