# C kompilator
Author: Bjorne

Jag har en Arduino uno som jag tänkte använda i en konstruktion.
Det visade sig att den skulle programeras i en C variant.
Ett språk som jag har förträngt för länge sedan.
Tacka vet jag Basic.
Jag måste dock krypa till korset, bita i det mycket sura äpplet och försöka tränga in C mysterierna.
Därför undrar jag om någon kan rekommendera någon enkel C kompilator man kan installera på en windows 10 dator.
Det känns inte riktigt bra att programmera om Arduinon tusentals gånger för att få till "Hello World \n" och liknande på den nivån.

## Comment 1
Author: Kaj

Den där kan nog Johan svara på bäst men Microsoft Visual Studio är väl en av de bästa utvecklingsmiljöerna vad jag vet.
https://visualstudio.microsoft.com/vs/features/cplusplus/ 

https://docs.microsoft.com/en-us/cpp/build/walkthrough-compile-a-c-program-on-the-command-line?view=msvc-160

https://visualstudio.microsoft.com/free-developer-offers/ 


Har du koden finns ju Online c compilers. Vet dock inte hur bra dom är
https://www.onlinegdb.com/online_c_compiler

## Comment 2
Author: johan

Programmerar inte i C eller C++ själv, men som Kaj skriver så finns Visual Studio i en gratis version för privatpersoner eller små teams. 

Jag gillar JetBrains produkter så jag kan tänka mig att deras CLion är trevligt att jobba med, men dom kostar. 

Vad gäller compilers så använder nog många ungefär samma i slutändan, som t ex LLVM. Men skaffa ett bra IDE så får du med compilern.

## Comment 3
Author: Niklas

#0: Finns det inte möjlighet att välja ett annat språk?

## Comment 4
Author: Bjorne

Nej, det verkar tyvärr vara en variant av C som gäller. Tänk om det vore basic i stället.Nu har jag kört fast igen. Inget verkar funka. Det är måsvingar och semikolon som ställer till det.

Nedanstående snutt som skall föreställa en klocka stannar vid 1:1:1 på displayen. 
När jag försöker lägga till en out pinne så överöses jag av en skur av felmeddelanden trots ivrigt experimenterande med både måsvingar och semikolon.

***************************

// include the library code:
void setup();

#include <LiquidCrystal.h>
#include <stdio.h>

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

int ledpin = 13;

//pinMode(13, OUTPUT); 

int tim, min, sek ;

int main(void)

{
  for ( tim = 1; tim < 7; tim = tim + 1)
       
   {
    for ( min = 2; min < 60; min = min + 1)     
       {
        for ( sek = 3; sek < 60; sek = sek + 1)
       {
        lcd.print(tim);
        lcd.print(":");
        lcd.print(min);
        lcd.print(":");
        lcd.print(sek);
        delay(1000);
        lcd.clear();
      }       
   
    }
  }
  return (0);
}

## Comment 5
Author: Niklas

Har du sökt svar på Stackexchange.com?

## Comment 6
Author: morten.dynamite

I Arduino skall du inte använda main() för den används internt i Arduino biblioteken.
Du lägger din initierings kod i setup() och programkoden som köres i en loop i loop().


#include &lt;LiquidCrystal.h&gt;

int ledpin = 13;
int tim, min, sek ;

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

void setup()
{
}

void loop(void)
{
  for ( tim = 1; tim < 7; tim = tim + 1)
  {
    for ( min = 2; min < 60; min = min + 1)
    {
      for ( sek = 3; sek < 60; sek = sek + 1)
      {
        lcd.print(tim);
        lcd.print(":");
        lcd.print(min);
        lcd.print(":");
        lcd.print(sek);
        delay(1000);
        lcd.clear();
      }
    }
  }
}

## Comment 7
Author: _Fisken

Jag använder mig av ett gratis konto på https://rextester.com.
Så bra att kunna ha en kompilator till hands med output när man ska prova sina snuttar. Sen går det att spara snuttarna också på rextester.
