Hallo zusammen,
ich würde gerne mit C++ eine Sinustabelle in einem array erstellen und
dieses dann in einer .txt ausgeben, um das array dann zum Erzeugen einer
Sinusspannung in einem µC-Programm zu nutzen.
Aus irgendeinem Grund läuft das Programm nicht...
Hier erstmal der Code:
1
#include"stdafx.h"
2
#include<stdio.h>
3
4
intn=0,i=0;
5
doublepi=3.1415926535897932,s,f,p;
6
intsinustabelle[];
7
8
doublesinus(doublex){
9
...//Potenzreihenentwicklung der Sinusfunktion (ist Fehlerfrei)
10
returns;
11
}
12
13
int_tmain()
14
{
15
FILE*pFile;
16
17
pFile=fopen("myfile.txt","w");//für diese Zeile bekomme ich die Fehler angezeigt
18
19
//Bereich Anfang
20
for(i=0;i<1000;i++){
21
sinustabelle[i]=int(sinus(((2*pi)/1000)*i)*1000);//geht das vielleicht so nicht? Ich möchte float oder double im uC-Programm vermeiden, deshalb das int-array.
22
}
23
24
fprintf(pFile,"sinustabelle[1000]={");
25
26
for(i=0;i<999;i++){
27
fprintf(pFile,"%d,",sinustabelle[i]);
28
}
29
30
fprintf(pFile,"%d}",sinustabelle[999]);
31
//Bereich Ende - Wenn ich diesen Bereich herausnehme, bekomme ich keine Fehlermeldung mehr, obwohl der Fehler für eine Zeile außerhalb des Bereichs angezeigt wird
32
33
fclose(pFile);
34
35
return0;
36
}
Das wären die Fehlermeldungen:
1>c:\users\yasin hamdan\documents\visual studio
2008\projects\sinustabelle\sinustabelle\sinustabelle.cpp(39) : warning
C4996: 'fopen': This function or variable may be unsafe. Consider using
fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS.
See online help for details.
1> c:\program files (x86)\microsoft visual studio
9.0\vc\include\stdio.h(237): Siehe Deklaration von 'fopen'
1>C:\Users\Yasin Hamdan\Documents\Visual Studio
2008\Projects\sinustabelle\Debug\sinustabelle.exe : fatal error LNK1120:
1 nicht aufgelöste externe Verweise.
1>C:\Users\Yasin Hamdan\Documents\Visual Studio
2008\Projects\sinustabelle\Debug\sinustabelle.exe : fatal error LNK1120:
1 nicht aufgelöste externe Verweise.
Ich verstehe nicht, weshalb das Programm so nicht läuft. Ich habe es mit
ähnlichen Programmen von mir, die ebenfalls die fprintf-Funktion nutzen
und problemlos laufen, verglichen, kann den Fehler aber trotzdem nicht
finden.
Ich würde mich freuen, wenn mir jemand weiterhelfen könnte.
Gruß
PIC-user
PIC-user schrieb im Beitrag #3615161:
> 1>C:\Users\Yasin Hamdan\Documents\Visual Studio> 2008\Projects\sinustabelle\Debug\sinustabelle.exe : fatal error LNK1120:> 1 nicht aufgelöste externe Verweise.
da fehlt noch etwas von der Fehlermeldung
PIC-user schrieb im Beitrag #3615161:
> int sinustabelle[];
Das soll wohl ein Array sein. Für wieviele Elemente bietet das Platz?
Nein, Dein Programm "läuft nicht" nicht, es lässt sich noch nicht mal
übersetzen (compilieren).
Und, wenn Du Dir die Meldungen des Compilers genau ansehen würdest,
würdest Du auch sehen, daß das nichts mit fopen zu tun hat.
Rufus Τ. Firefly schrieb:> Nein, Dein Programm "läuft nicht" nicht, es lässt sich noch nicht mal> übersetzen (compilieren).
Was hast du denn für ein Problem, es lässt sich doch übersetzen?
Wenn schon C++, kannst du auch die diversen hilfreichen Klassen, die C++
bietet, verwenden, anstelle der alten C-API's die von Windows scheinbar
nicht so ganz unterstützt werden:
Höhlenproll schrieb:> Was hast du denn für ein Problem, es lässt sich doch übersetzen?
Die Fehlermeldungen, so unvollständig sie auch sein mögen, sagen da
recht deutlich was anderes.
Dr. Sommer (Gast) schrieb:
>> Da fehlt aber noch was damit das in VS compiliert. ;)>Nö, da im Code überal "std::" steht, ist das "using namespace std;">überflüssig. Wenn VS das trotzdem braucht wäre es ganz schön kaputt.
Stimmt, geht auch ohne. Beim Einfügen deines Codes in VS10 hatte VS mir
zunächst die std Ausdrücke rot markiert und mit dem using gings dann
sofort weg. :) Geht aber auch so beim ersten compilieren weg. Im MSDN
findet sich häufig in Codebeispielen die using Anweisung. Geschadet
hat's auf jeden Fall nicht. Deine Sinustab ist erstellt ob mit oder ohne
explizitem using ..
Samuel J. schrieb:> Das sind Linker-Errors, keine Compiler-Errors
Es ist von einem Programm die Rede, das funktioniert erst dann, wenn
auch die Linkerfehler weg sind. Kommt Dir das komisch vor?
PIC-user schrieb im Beitrag #3615161:
> Aus irgendeinem Grund läuft das Programm nicht...
Naja, wenn es liefe, würde es auch aus anderen Gründen nichts taugen.
Hast du dir schon mal nen Gedanken über die Skalierung gemacht? Nee.
Also erstmal die Y-Skalierung: Je nach Anwendungsfall müßtest du nicht
nur mit einem Faktor herangehen, sondern auch noch mit Offset, denn die
meisten DAC's brauchen positiv definite Werte.
Aber du hast gewiß auch keinen µC, für den Pi eine gerade Zahl ist. Also
mußt du dir auch noch Gedanken machen, wieviele Werte bei deiner
Anwendung ein Vollkreis ausmachen soll. Das läuft auf ne X-Skalierung
hinaus. Gelle?
"double pi=3.1415926535897932"
Overkill. Mit nem simplen Basic-Programm wärest du schneller am Ziel und
dessen Genauigkeit reicht allemal, um eine Tabelle für nen DAC in einem
µC zu erzeugen.
W.S.