2009-08-05 20 views
0

Ich schreibe eine C++ - Bibliothek, die sowohl von einer Windows-Anwendung als auch von Symbian verwendet werden soll. Linux ist keine aktuelle Anforderung, sollte aber generell auch möglich sein.
Aus diesem Grund würde ich gerne die STL/Boost-Namenskonventionen anstelle von Symbian's verwenden, von denen ich denke, es ist schwer sich daran zu gewöhnen.
Dies scheint bereits ein Problem darzustellen, wenn der Code mit Carbide.C++ kompiliert wird, da er die Symbian-Namenskonvention erzwingt.Wie umgehen Symbian Namenskonventionen?

Wie kann ich "normale" Namen verwenden und trotzdem Symbian-kompatibel sein? Ich dachte zuerst über bedingt #define-Klasse Klassennamen für die Symbian-Plattform, aber ich fürchte, dass dies zu Verwirrung führen wird.

Können andere Probleme auftreten, wenn Sie die Namenskonvention von Symbian nicht einhalten?

+1

Welche Konventionen erzwingt? Wenn es Klassennamen erzwingen soll, mit C zu beginnen, dann ist das ziemlich falsch und wenn du es nicht ausschalten kannst, benutze kein Carbide. Sie müssen Ihre eigenen mmp-Dateien schreiben, aber es ist nicht das Ende der Welt. Wenn es nur darum geht, Funktionen zu verlassen, dann ist es richtig, dass Ihre plattformübergreifende Client-API nicht verlassen sollte, oder? Oder wird es dokumentiert, "diese Funktion lässt auf Symbian, aber wirft eine Ausnahme auf Windows"? Ich denke, das ist eine schlechte Idee: biete einfach zwei Schnittstellen zu deiner Bibliothek an, wenn das Verhalten anders ist. –

+0

Eigentlich weiß ich nicht welche Konventionen er durchsetzt. Mein Kollege, der das Symbian-spezifische Zeug machen würde, sagte mir, wir sollten uns besser an die Konvention halten, sonst könnten seltsame Dinge passieren. Er ist auch kein Symbian-Experte. Wir versuchen nur Code wiederzuverwenden, der bereits auf Symbian funktioniert und ihn auch woanders nutzbar machen. – foraidt

Antwort

4

Codierungskonventionen sind nicht streng. Sie sind da, um uns Menschen das Verständnis von Code zu erleichtern. Wenn Sie eine Multi-Plattform-Bibliothek schreiben, können Sie gerne die Konvention verwenden, mit der Sie sich auskennen.

Natürlich muss Ihre Bibliothek wahrscheinlich in irgendeiner Weise mit dem zugrunde liegenden Betriebssystem interagieren. Mit Hilfe von Open C/C++ libraries können Sie viele Dinge tun, ohne native Symbian C++ - APIs und deren Namenskonventionen verwenden zu müssen.

In Carbide.C++ möchten Sie möglicherweise statische CodeScanner-Analyse deaktivieren, wie es wirklich nur nützlich ist, Code in nativem Symbian C++ geschrieben.

Also zusammenfassend, sind die Probleme wie folgt:

  • kommen Menschen aus nativen Symbian C++ Hintergrund sind nicht sofort vertraut mit Konventionen
  • mit nativen Symbian C++ APIs können einige plattformspezifische Besonderheiten aussetzen (Ausnahmen vs. Blätter, trap Geschirre, aktive Disponenten etc.)
  • Symbian-spezifische statische Analysatoren wie CodeScanner annehmen Symbian C++ Code-Stil und kann Fehler/Warnungen erzeugen Sie wirklich brauchen nicht über
Pflege