#include "stdio.h" void show(int first, int second) { printf("First is\n", first); printf("Second is\n", second); }int main (int argc, const char * argv[]) { show(100, 100); printf("Hello, World!\n"); return 0;}
void show(int first, int second) { printf("First is\n", first); printf("Second is\n", second); }
int main (int argc, const char * argv[]) { show(100, 100); printf("Hello, World!\n"); return 0;}
Ik krijg alleen geen 100 als resultaat, de plek waar hij hoort te staan blijft leeg.
Wat moet ik doen?
Alvast bedankt
P.S. Achter #include hoort stdio.h tussen hoekige aanhalings tekens te staan, maar dat schijnt nu niet te lukken
McLangendorff om 20:32, 14-05-2008printf("First is %d\n", first); /* Added %d to print the variable */
Nog een paar puntjes:- gebruik #include <stdio.h> (dus <> ipv "")- zorg voor consequent inspringen en plaatsen van de accolades, dat houdt je code leesbaarder; veel editors kunnen je een handje helpen
Nog even een vraagje, weten jullie een goede GUI (voor C) die goed met XCode werkt en makkelijk te installeren is?wxWidgets en QT heb ik al geprobeerd maar is me niet gelukt in Xcode te zetten (ondanks tutorials)
Bedankt!
Andere tip: http://www.cppreference.com/ hier is veel C++ maar ook C info te vinden!
Maar alle bibliotheken die als gecompileerde bibliotheek bestaan kunnen binnen XCode gebruikt worden, want XCode is niets anders dan een editor en project-manager om gcc en ld en dat soort tools heen.
Verder is Cocoa natuurlijk de echte, "native" GUI-bibliotheek voor OSX programma's. Er zijn genoeg tutorials voor. Vooral de wat geavanceerdere onderdelen (key-value binding, core data, etc.) zijn erg fijn om mee te werken. Nadeel: het draait alleen op OSX.
Maar voor wxWidgets is er goed nieuws: het is beschikbaar via DarwinPorts: http://wxwidgets.darwinports.com/. Als je eenmaal de basis van darwinports geïnstalleerd hebt, kun je probleemloos alle ports installeren en up-to-date houden (darwinports is een soort packet manager a la RPM). Het commando om wxwidgets te installeren is: sudo port install wxwidgets, eenvoudiger kan het niet. Wel moet je dan even goed zoeken waar alles staat (waarschijnlijk in /opt/local).
Cocoa ken ik al vrij goed en ik heb hier dan ook al meerdere programma's mee gemaakt.Het nadeel is dat het niet in C kan.Ik zal kijken of wxWidgets nu lukt.
Maar even serieus, ik krijg errors over van alles en nog wat.
Weet iemand waar de libraries van wxWidgets zijn, ik heb het ooit geweten maar ik ben het nu weer kwijt.
Nog een laatste vraag, Als ik in Xcode bij Targets-->Get Info-->Build-->Header Search Path; iets invul bouwt hij dat mee waardoor ik vaak duizenden(letterlijk!) errors krijg. Kan ik die ook niet mee laten compilen?
stijnschoor om 11:51, 17-05-2008snik, het lukt niet Maar even serieus, ik krijg errors over van alles en nog wat.Weet iemand waar de libraries van wxWidgets zijn, ik heb het ooit geweten maar ik ben het nu weer kwijt.Nog een laatste vraag, Als ik in Xcode bij Targets-->Get Info-->Build-->Header Search Path; iets invul bouwt hij dat mee waardoor ik vaak duizenden(letterlijk!) errors krijg. Kan ik die ook niet mee laten compilen?
Als het port commando succesvol is, dan moet je met het find/grep-commando hierboven (of het equivalente commando: find / -name 'wxWid*') kunnen vinden waar de files weggeschreven zijn.
Je moet dan de directory waarin de directory wx staat toevoegen aan de "search paths". Standaard zijn de includes voor een wx-applicatie namelijk iets als
#include "wx/wx.h"
dus moet de compiler weten waar "wx" staat. Daarnaast moet je juiste bibliotheek toevoegen aan je project, anders krijg je fouten van het type "unknown symbol: _wxMessageDialog" bij het linken (dus na een succesvolle compilatie).
Overigens moet je je realiseren dat je geen wx-files kunt includen vanuit een c programma, aangezien wx helemaal C++ gebaseerd is. Dat zou je foutmeldingen kunnen verklaren.
Ik heb een C++ project gemaakt en er de wxWidgets libraries aantoegevoegd, ook de include bestanden zijn gevonden en als search path opgegeven. Het probleem is nu dat ik nu errors binnen de wxWidgets libraries krijg.
wxMac-2.8.7/include/wx/string.h:164:4: error: #error "Please define string case-insensitive compare for your OS/compilerwxMac-2.8.7/include/wx/defs.h:1015: error: conflicting declaration 'typedef wxInt32 ssize_t'/usr/include/string.h:70: error: 'ssize_t' has a previous declaration as 'typedef __darwin_ssize_t ssize_t'
wxMac-2.8.7/include/wx/defs.h:1015: error: conflicting declaration 'typedef wxInt32 ssize_t'
/usr/include/string.h:70: error: 'ssize_t' has a previous declaration as 'typedef __darwin_ssize_t ssize_t'
Als iemand het project wil bekijken zal ik het uploaden.
wxWidget ben ik met sudo opnieuw aan het bouwen, De error kwam doordat internet uitviel.
(Bewerkt door stijnschoor om 19:10, 17-05-2008)
find / -name Window.h | fgrep Fl/Window.h
Als het goed is, krijg je na een tijdje gepruttel een pad, iets als /usr/local/.../Fl/Window.h. Het stuk *VOOR* Fl/Window.h voeg je toe aan je XCode instellingen (Rightclick Target > Get Info > Build > All Configurations > Search Paths). Als je includes met vishaken gebruikt (#include <Fl/...>) dan voeg je de directory toe aan "Header Search Paths", als je aanhalingstekens gebruikt (#include "Fl/...") dan aan "User Header Search Paths". En let wel: de laatste "/Fl/Window.h" moet van het zoekpad weggehaald worden.
Bedankt! Dat was precies wat ik nodig had!
Het lukt me eindelijk, zelfs met Qt!
Bewijs:
Bedankt iedereen!
(Bewerkt door stijnschoor om 18:15, 19-05-2008)
P.S. Nog een klein vraagje, wat is de functie van een class? Ik snap dat hij variabelen bevat maar dan kan het toch net zo goed een struct zijn?
(Bewerkt door stijnschoor om 20:12, 21-05-2008)
#include <iostream>using namespace std;// de class SObjectclass SObject {public:int age;static void setAge(int a);static void showAge();};// functie voor de leeftijd static void setAge(int a){int age = a;printf("age is %d", age);}// functie waar een nieuw object wordt gemaakt en de leeftijd wordt ingesteldvoid man(){SObject *newObject;newObject->setAge(14);}int main (int argc, char * const argv[]) { man(); return 0;}
using namespace std;
// de class SObjectclass SObject {public:int age;static void setAge(int a);static void showAge();};
// functie voor de leeftijd static void setAge(int a){int age = a;printf("age is %d", age);}
// functie waar een nieuw object wordt gemaakt en de leeftijd wordt ingesteldvoid man(){SObject *newObject;newObject->setAge(14);}
int main (int argc, char * const argv[]) { man(); return 0;}
en nu de error:
ZeroLink: unknown symbol '__ZN7SObject6setAgeEi'
Misschien is het een domme vraag of heb ik de klok horen luiden maar de klepel niet kunnen vinden maar wat doe ik niet goed?
P.S. Sorry voor de onduideijke code, als je iets in code tags zet wordt bijna alles naar de kant geduwt.
(Bewerkt door stijnschoor om 18:31, 22-05-2008)