Error: expected ')' before

Gast #2673798
Lesenswert?

Hallo
Ich hab folgenden Code:
1
#include <avr/io.h>
2
#include "pins.h"
3

4
int main(void)
5
{
6
  set_low(0, DDRD, PORTD);
7
    while(1)
8
    {
9
        //TODO:: Please write your application code 
10
    }
11
}
1
#ifndef PINS_H_
2
#define PINS_H_
3

4
void set_hight(uint8_t pin, uint8_t ddr, uint8_t port);    // Error
5
void set_low(uint8_t pin, uint8_t ddr, uint8_t port);      // Error
6

7
#endif
1
#include "pins.h"
2

3
void set_hight(uint8_t pin, uint8_t ddr, uint8_t port){    // Error
4
  ddr = ddr | (1<<pin);
5
  port = port | (1<<pin);
6
}
7
void set_low(uint8_t pin, uint8_t ddr, uint8_t port){      // Error
8
  ddr = ddr && !(1<<pin);
9
  port = port && !(1<<pin);
10
}
Nun bekomme ich viermal folgenden Error in den markierten Zeilen:
expected ')' before 'pin'

Was mach ich denn da falsch? Hab schon ein bischen im Internet gesucht 
und bin darauf gestoßen, dass uint8_t unbekannt ist!?
Gast #2673817
Lesenswert?

:) Ok super danke es funktioniert! Aber ich hab leider keine Warnung 
erhalten...
Es sieht jetzt so aus:
1
#include <avr/io.h>
2
#include <stdint.h>
3
#include "pins.h"
4

5
int main(void)
6
{
7
  set_low(0, DDRD, PORTD);
8
    while(1)
9
    {
10
        //TODO:: Please write your application code 
11
    }
12
}
und:
1
#include <stdint.h>
2

3

4
#ifndef PINS_H_
5
#define PINS_H_
6

7
void set_hight(uint8_t pin, uint8_t ddr, uint8_t port);
8
void set_low(uint8_t pin, uint8_t ddr, uint8_t port);
9

10
#endif
Die andere Datei hab ich nicht veränder...
Wird aber nicht jetzt stdint.h doppelt inkludiert?
Gast #2673840
Lesenswert?

> Aber ich hab leider keine Warnung erhalten...

Stimmt, hier auch nicht (mehr?). War mir sicher da kommt ein 'warning: 
unknown "uint8_t" .. assuming something something' davor..

> Wird aber nicht jetzt stdint.h doppelt inkludiert?

Jein. Normalerweise(tm) macht man sich keine Sorgen wegen doppelter 
Includes, die sind eh adäquat ∗abgesichert∗ (d.h. 'Ja, wird doppelt 
eingebunden' und 'Nein, es entstehen daraus keine Probleme').

Saubererweise holt sich ∗jeder∗ ∗alle∗ Header rein, die ∗er∗ braucht, 
nicht mehr und nicht weniger. So gesehen braucht obige main die stdint.h 
(noch) nicht.

Unabhängig vom obigen Problem: Überlegs Dir nochmals genau, ob Du 
set_[high,low] wirklich als Funktionen implementieren willst oder nicht 
doch als Präprozessormakros.

HTH und nix für ungut

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren