wofür ist \_\_gxx\_personality\_v0?
<p>dies ist eine frage aus zweiter hand von einer os-entwicklungssite, aber sie hat mich neugierig gemacht, da ich nirgendwo eine anständige erklärung finden konnte.</p><p>beim kompilieren und verknüpfen eines eigenständigen c++ - programms mit gcc tritt manchmal der folgende linker-fehler auf:</p><pre><code>out/kernel.o:(.eh\_frame+0x11): undefined reference to `\_\_gxx\_personality\_v0' </code></pre><p>dies liegt anscheinend daran, dass dieses symbol in libstdc ++ definiert ist, das in einer freistehenden umgebung fehlt. um das problem zu beheben, müssen sie lediglich dieses symbol definieren:</p><pre><code>void *\_\_gxx\_personality\_v0; </code></pre><p>was ist nizza, aber ich mag keine dinge, die auf magische weise funktionieren ... die frage ist also, was ist der zweck dieses symbols?</p>
<p>es wird in den stapel-auflösetabellen verwendet, die sie zum beispiel in der assembly-ausgabe von <a href="https://stackoverflow.com/questions/307610/how-do-exceptions-work-behind-the-scenes-in-c#307716">meine antwort auf eine andere frage</a> sehen können. wie in dieser antwort erwähnt, wird ihre verwendung durch <a href="https://itanium-cxx-abi.github.io/cxx-abi">itanium c++ abi</a> definiert, wobei sie <a href="https://itanium-cxx-abi.github.io/cxx-abi/abi-eh.html#base-personality">personality routine</a> genannt wird.</p><p>der grund, warum es "funktioniert", indem es als globaler null-leerzeiger definiert wird, ist wahrscheinlich, dass nichts eine ausnahme auslöst. wenn etwas versucht, eine ausnahme auszulösen, werden sie feststellen, dass es sich schlecht benimmt.</p><p>wenn keine ausnahmen verwendet werden, können sie diese natürlich mit <code>-fno-exceptions</code> deaktivieren (und wenn rtti nicht verwendet wird, können sie auch <code>-fno-rtti</code> hinzufügen). wenn sie sie verwenden, müssen sie (wie andere bereits erwähnte antworten) mit <code>g++</code> anstelle von <code>gcc</code> verknüpfen, wodurch <code>-lstdc++</code> für sie hinzugefügt wird.</p>
Parameter von Lambda-Ausdrücken verwenden keine auf Namen basierende Gleichheit, sie verwenden Referenzgleichheit. In Ihrem Ausdruck haben Sie also zwei völlig verschiedene Parameter namens `s` , einer ist definiert, wird aber nicht verwendet, der andere wird verwendet, aber nicht definiert. 

 Also, im Grunde ist Ihr Ausdruck etwas wie `s1 => s2 == "test"` , weshalb er nicht kompiliert werden kann. Die einfachste Lösung wäre, denselben Parameter zu verwenden, den der ursprüngliche Ausdruck verwendet: 


```
LambdaExpression lambda = Expression.Lambda(equal.Body, equal.Parameters.Single());

```
  Wenn Sie wirklich Ihren eigenen Parameter verwenden möchten, müssten Sie alle Instanzen des ursprünglichen Parameters im Lambda-Body durch Ihren neuen Parameter ersetzen. Der beste Weg dies zu tun, ist [`ExpressionVisitor`](http://msdn.microsoft.com/en-us/library/system.linq.expressions.expressionvisitor.aspx) zu verwenden. <p>c hat den vorteil, dass es eine relativ <strong> <em> kleine sprache</em> </strong> ist, was es <strong> macht ) <em> einfach einen c-compiler zu implementieren</em> </strong> (während ein c++ - compiler ein monster zum schreiben ist), und macht es <strong> = <em> leichter die sprache zu lernen</em> </strong>. siehe auch <a href="https://www.tiobe.com/tiobe-index/">tiobe-index</a> , wonach c etwas vor c++ liegt.</p><p>in (imo) abnehmender reihenfolge der rechtfertigung wird c immer noch häufig verwendet</p><ul> <li> <p>eingebettetes zeug<br> es ist viel einfacher, einen c-compiler auf eine kleine plattform zu portieren, als einen c++ - compiler zu portieren. außerdem behaupten c-befürworter, dass c++ "hinter ihrem rücken zu viel tut". allerdings imo das ist fud.</p> </li> <li> <p>systemprogrammierung<br> auch dies ist normalerweise auf die behauptung zurückzuführen, dass es einfacher ist, "zu wissen, was der compiler tut". viele eingebettete programme würden jedoch beispielsweise von vorlagen und anderen c++ - schlüsselfunktionen profitieren.</p> </li> <li> <p>quelloffene software<br> das ist jedoch meistens ein einstellungsproblem: oss hat c immer c++ vorgezogen (während es in großen teilen der branche das gegenteil ist). torvalds irrationaler hass könnte tatsächlich der wichtigste grund dafür sein <em> unter linux</em>.</p> </li> </ul> Steht sie nicht in den Einstellungen der APP, ganz unten bei "APP-Informationen"?
 
Gruß  
cuter2 hallo,

ich benutze die standardsoftware dev 2.1.

die ausgabe sieht wie folgt aus:

\_\_\_\_\_ \_\_\_\_\_ \_\_\_\_\_ \_\_\_\_\_ \_\_\_\_\_

|\_ \_|\_\_\_ \_\_\_| | | | | | |

| | | . | | | |- -| | | | | |

|\_| |\_\_\_|\_|\_|\_\_\_\_\_|\_\_\_\_\_|\_|\_\_\_|\_\_\_\_\_|

tonuino version 2.1

created by thorsten voß and license… <p>wenn dies meine entwurfsentscheidung wäre, würde ich wahrscheinlich eher eine option c (modifizierte option a) wählen.</p><h3>erstens, warum nicht 'option b':</h3><p>zum einen gefällt mir die klarheit, dass jedes produkt seinen eigenen tisch hat. wenn es sich nur um eine große tabelle mit einem feld zur bestimmung des typs handelt, ist die beziehung nicht so klar.</p><p>zum anderen würde die indizierungsstrategie immer erfordern, dass dieses typfeld aufgelistet wird. da es sich nur um 4 typen handelt, ist die indexkardinalität extrem niedrig (<code>select * from product\_table where type='x'</code> führt im grunde sowieso einen vollständigen tabellenscan durch)</p><h3>option c.</h3><ul> <li>erstellen sie eine übergeordnete tabelle, die nur die spalten enthält, die alle typen gemeinsam nutzen</li> <li>erstellen sie jeden produkttyp als eigene tabelle mit ihren einzelnen spalten, mit einem zusätzlichen: ein link zur übergeordneten tabelle</li> <li>erstellen sie jede 'link'-tabelle: product\_option, model\_option usw. mit links zu den jeweiligen schlüsseln.</li> <li>für diejenigen mit wechselseitigen links (model\_option, option\_model) erstellen sie auch diese tabellen. dies erhöht die klarheit ihrer joins für alle, die sich das ansehen.</li> </ul><p>der nachteil ist die komplexität, sicherzustellen, dass waisen vermieden werden, wenn dinge aktualisiert/gelöscht werden, und zunächst die abfragen zu entwerfen, die diese tabellen verwenden.</p> <ol> <li> <p>wenn sie als unternehmen verkaufen, schützen sie ihr privatvermögen vor verärgerten kunden, wettbewerbern und allen anderen, die sie ausprobieren möchten</p> </li> <li> <p>der verkauf unter einem firmennamen hilft bei der entwicklung einer marke. richtiger name ist langweilig. überlegen sie sich etwas kreatives und machen sie den namen bekannt.</p> </li> <li> <p>abhängig von ihrem speziellen namen und seiner herkunft haben einige leute möglicherweise bestimmte negative assoziationen oder ideen und entscheiden, dass sie ihren namen einfach nicht mögen, um mit ihnen in irgendeiner weise geschäfte zu machen (geben ihnen möglicherweise nicht nur 0,99 usd oder nehmen sogar ihre app kostenlos). ein firmenname schützt sie vor phobischen menschen.</p> </li> <li> <p>mit einer marke erhalten sie anerkennung für ihre neuen apps. wenn sie eine andere "advanced notes" -app einwerfen, besteht eine gute chance, dass sie unbemerkt bleiben. wenn sie es "coolcomp notes" nennen, wird es ein interesse wecken, wenn ihr name mit großartigen apps verbunden ist.</p> </li> <li> <p>eine marke hilft ihnen dabei, ihre apps einfach und konsistent zu benennen. anstatt zu kämpfen, um einen weiteren namen für ihre nächste app wie "super notes", "personal finances plus" usw. zu erfinden, können sie sie einfach zu "coolcomp notes", "coolcomp finances" machen. viel einfacher und erstellt ein portfolio.</p> </li> <li> <p>eine marke ist später einfacher und zu einem höheren preis zu verkaufen als eine sammlung zufälliger apps von einem typen namens "joshua carmody".</p> </li> </ol> <p>ein freund von mir hat einmal darauf hingewiesen, dass lizenzen ihnen sagen, wovor die lizenzautoren angst hatten.</p><p>wenn sie angst haben, ihren namen durch den schlamm zu ziehen, scheint die bsd-lizenz besser zu sein. wenn sie angst haben, ihre software in eine proprietäre software zu integrieren, scheint die gpl besser zu sein. unabhängig von der lizenz wählt der autor sie, weil sie sie vor dem schützt, wovor sie angst haben.</p><p>unterschiedliche personen haben unterschiedliche bedenken und verwenden daher unterschiedliche lizenzen.</p> die fehlermeldung: eingabe fehlt für das feld „belastung“ deutet auf einen fehlenden betrag hin, denn buchungen für steuern benötigen nur ein verrechnungskonto und kein wertpapier.

.gruß

mehr hi, das ist so beabsichtigt.

grüße Drag & Drop von FileZilla Remote Panel zu Windows Explorer erfordert eine "copy hook" Shell-Erweiterung.

 Diese Art von Shell-Erweiterungen wurde in Windows 10 Version 1803 beschädigt. Daher sind alle Anwendungen, die sich darauf verlassen, defekt (nicht nur FileZilla).

 Es gibt sogar eine [Ankündigung](https://filezilla-project.org/versions.php#3.33.0) auf der FileZilla-Website:

 
>  Microsoft hat die ICopyHook-Schnittstelle in Windows 1803 gebrochen. Solange Microsoft den Fehler in Windows nicht behoben hat, kann Drag & Drop von FileZilla in den Explorer unter Windows 1803 nicht ausgeführt werden.
> 
>  

 



 *Für einige Hintergrundinformationen können Sie den [WinSCP-Artikel über die Drag & Drop-Shell-Erweiterung](https://winscp.net/eng/docs/dragext) lesen . FileZilla verwendet WinSCP-Code für Drag & Drop (der wiederum ähnlichen Code von Altap Salamander verwendet). Obwohl WinSCP über alternative Methoden verfügt, funktioniert Drag & Drop auch ohne die Erweiterung.*