C in Visual Studio .... wie?
-
Hallo Leute,
ich musste arbeitsechnisch auf Windows umsteigen und möche gerne in Visual Studio C Programme kompilieren. Wie stell ich das an? Es gibt da nur Visual C++ Projekte...
Viele Grüße !

-
C++ enthaelt eine grosse Teilmenge von C. Wo gibt es denn Probleme?
-
Einfach die Datei main.c statt main.cpp nennen und schon behandelt der compiler es als C.
-
In den Projekteinstellungen kannst du auch auswählen, ob C oder C++ kompiliert werden soll. Aber wie schon gesagt, die Datei(en) einfach mit Endung ".c" benennen, dann geht's automatisch.
-
Hallo, erstmal vielen Dank!
ok - so habe ich es versucht. Mich wundert, dass der compiler stdbool.h nicht kennt. Scheint also keinen C99 standard zu haben ... Was kann man da machen?
-
Kleinling schrieb:
Hallo, erstmal vielen Dank!
ok - so habe ich es versucht. Mich wundert, dass der compiler stdbool.h nicht kennt. Scheint also keinen C99 standard zu haben ...
Wohl nicht.
http://en.wikipedia.org/wiki/C99Kleinling schrieb:
Was kann man da machen?
Naja, wenn's nur um stdbool.h geht, das kannste ja gut selber nachbauen.
Aber die anderen Features alle?Der Vorschlag von knivil, C++ zu nehmen und sich auf die C-Features zu beschränken, ist gar nicht total unvernünftig. VLAs haste dann aber trotzdem nicht.
-
knivil schrieb:
C++ enthaelt eine grosse Teilmenge von C. Wo gibt es denn Probleme?
Aber sobald du Pointerkonvertierungen drin hast (d.h. unter anderem jedes Programm mit manueller Speicherverwaltung und jedwede Art von generischem Code) geht es schon nicht mehr. Das hat man eigentlich in jedem normalem Programm drin. Dann muss man überall Casts rein machen.
Kleinling schrieb:
Scheint also keinen C99 standard zu haben
So ist es.
Was kann man da machen?
Nun, in diesem konkretem Fall geht zur Not noch
#define bool int #define true 1 #define false 0Ansonsten: Musste eben C89 programmieren.
P.S.: Vorsicht: Bei obigem Beispiel gehen manche Sachen nicht (oder sind gefährlich), die mit einem richtigen bool gehen würden, wie zum Beispiel ein absoluter Vergleich mit true (ist sowieso schlechter Stil, sollte man aber erwähnt haben).
-
man kann auch definieren
#define true (!false)
-
oder so
typedef unsigned int bool; const bool false = (0 != 0); const bool true = (0 == 0);
-
...
-
"1" ist immer sehr schlecht... 0 verstehe ich ja noch... aber mal macht jemand 1, mal jemand -1....
Vergleiche sollten immer nur auf "false" erfolgen
Eigentlich gehört "true" in if-Abfragen verboten... nur bei Zuweisungen sollte man sie verwenden...
-
...
-
Swordfish schrieb:
Nur zur Klarstellung: Ich bezog mich auf dd++s Vorschlag.
Das gesagt gilt aber genau so für den Vorschlag von "einer der es wirklich kan"(sic!).
(!false) == (!0) == (1) == 1
-
die Sprache C ist weiter verbreitet als C++, da gibt es auch exotische Hardware mit exotischen Compilern. deshalb steht in einigen Headern diese TRUE = (0==0) und FALSE = (0!=0) oder FALSE = (!TRUE) Berechnung. wenn man einen Compiler hat, der mindestens C89 konform ist, kann man auch 1 und 0 verwenden
-
dd++ schrieb:
die Sprache C ist weiter verbreitet als C++, da gibt es auch exotische Hardware mit exotischen Compilern. deshalb steht in einigen Headern diese TRUE = (0==0) und FALSE = (0!=0) oder FALSE = (!TRUE) Berechnung.
Jetzt bin ich aber mal gespannt auf ein Beispiel dafür.
-
[quote="SeppJ"]
Kleinling schrieb:
Scheint also keinen C99 standard zu haben
So ist es.
Was kann man da machen?
Nun, in diesem konkretem Fall geht zur Not noch
#define bool int #define true 1 #define false 0Ansonsten: Musste eben C89 programmieren.
[QUOTE]Es ist guter Programmierstil und Konvention, wenn man Makros groß schreibt.
Du schreibst sie dagegen klein, das ist schlecht.P.S.: Vorsicht: Bei obigem Beispiel gehen manche Sachen nicht (oder sind gefährlich), die mit einem richtigen bool gehen würden, wie zum Beispiel ein absoluter Vergleich mit true (ist sowieso schlechter Stil, sollte man aber erwähnt haben).
Wieso?
Meinst du das:bool b = 0;
if (b == true){
...
}weil man auch einfach
book b = 0;
if (b){
...
}schreiben könnte?
-
Wieso verwendet du nicht einfach den gcc in Visual Studio, der kann C99.
-
Große Makros schrieb:
Wieso verwendet du nicht einfach den gcc in Visual Studio, der kann C99.
Hast du auch einen einfachen Vorschlag, wie man das am besten macht!?
-
dot schrieb:
Große Makros schrieb:
Wieso verwendet du nicht einfach den gcc in Visual Studio, der kann C99.
Hast du auch einen einfachen Vorschlag, wie man das am besten macht!?
Wem das zu kompliziert ist, der soll einfach Eclipse IDE for C/C++ Developers nehmen.
http://www.eclipse.org/downloads/
-
Große Markos schrieb:
Es ist guter Programmierstil und Konvention, wenn man Makros groß schreibt.
Du schreibst sie dagegen klein, das ist schlecht.Nein, das ist der Ersatz für stdbool.h. Das war gefragt, dies ist die Lösung. Da sind sie klein geschrieben.
P.S.: Vorsicht: Bei obigem Beispiel gehen manche Sachen nicht (oder sind gefährlich), die mit einem richtigen bool gehen würden, wie zum Beispiel ein absoluter Vergleich mit true (ist sowieso schlechter Stil, sollte man aber erwähnt haben).
Wieso?
Meinst du das:bool b = 0;
if (b == true){
...
}weil man auch einfach
book b = 0;
if (b){
...
}schreiben könnte?
if (irgendwas == true)ist bei obiger Definiton nicht äquivalent zu(irgendwas != false), sondern zuif (irgendwas == 1). Konkret ist in richtigem C++/C99:bool foo = 2; if (foo == true) // wahraber mit obigem stdbool-Ersatz:
bool foo = 2; if (foo == true) // falsch
Das ist wohl selten das, was man meint.