Aplikacja konsolowa i windows.h

0

Po dodaniu pliku nagłówkowego windows.h wyskakują mi błędu z niezgodnością typów przy deklaracji funkcji int max(int *,int) i innych. Windows.h dodałem bo potrzebuje funkcje GetTickCout() jak temu problemowi zaradzić, czemu takie coś występuje >?

0

W C++ istnieje coś takiego, jak przestrzenie nazw.

0

Które nie mają nic wspólnego z WINAPI i nie dają się z nim połączyć...

0

mozna probowac z #define NOMINMAX przed naglowkowym, ale nie zawsze dziala. Z czym u Ciebie sie gryzie ?

0
#include <iostream>
using namespace std;
//#include <windows.h>
bool czyniepaz(int);
int n_problem(int,int=0);
int n_problemsum(int,int);
int max(int*,int);
void main() 
{
	int n;
	/*cin>>n;
	cout<<n_ problem(n);*/
	float start;
	float end;
//	start=GetTickCount();
	cout<<n_problemsum(900,1000);

}
int max(int* tab,int length)
{
	cout<<"length= "<<length<<endl;
	if (tab)
	{
		int max=tab[0];
		for(int i=0;i<length;i++)
		{
			//cout<<*tab<<endl;
			if (*tab>max)
				max=*tab;
			tab++;
		}
		return max;
	}
	else
		return 0;
}
bool czyniepaz(int a)
{
	return  (a % 2);
}
int n_problem(int liczba,int cyclelen)
{	
	cyclelen++;
	//cout<<liczba<<endl;
	if (liczba==1)
		return cyclelen;
	else
		if (czyniepaz(liczba))
		{
			n_problem(3*liczba+1,cyclelen);
		}
		else
		{
			n_problem(liczba/2,cyclelen);
		}
}
int n_problemsum(int a,int b)
{
	int *tab,length;
	if ((b-a-1)>0)
	{
		length=b-a-1;
		tab=new int[length];

		for (++a;a<b;a++)
		{	
			*tab=n_problem(a);
			//cout<<a<<endl;
			tab++;
			
		}
	}
	return max(tab-length,length);

}

Gdy wywale komentarz przy #include -> windows.h to pojawiają się błędy
dodam także że zauważyłem że nie jest to wina kodu bo w poniższym programie problem jest taki sam -> dodaje to żebyście nie musieli szukać błędów w tym wyżej :).

// kk.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
//#include <windows.h>
using namespace std;

int max(int*,int);
int _tmain(int argc, _TCHAR* argv[])
{
	cout<<"aaaaaaaaaa";
	return 0;
}
int max(int*a,int b)
{

	return b;
}

0

Masz kolizję nazw. Jak zmienisz to swoje max na maks to pójdzie.

0

nie interesowałem się tym co jest w windows.h poza odliczaniem czasu :) mój błąd dzieki za pomoc -> nie wiedziałem że te błędy odpowiadają za kolizje nazw -> teraz będę już pamiętał

0

Kompilator pewnie to jasno napisal, ale ani nie wkleiles, ani nie przeczytales.

0

Oto błędy powstałe w wyniki wykonywania tego pierwszego programu - 3n+1 problem.
Może mi pomoże ktoś po których błędach mogę wywnioskować że chodzi o nie możliwe do zrealizowania przeładowanie funkcji ?

Error 1 error C2062: type 'int' unexpected c:\users\jacek\documents\visual studio 2008\projects\testtt\testtt\testtt.cpp 8
Error 2 error C2062: type 'int' unexpected c:\users\jacek\documents\visual studio 2008\projects\testtt\testtt\testtt.cpp 8
Error 3 error C2059: syntax error : ')' c:\users\jacek\documents\visual studio 2008\projects\testtt\testtt\testtt.cpp 8
Error 6 error C2062: type 'int' unexpected c:\users\jacek\documents\visual studio 2008\projects\testtt\testtt\testtt.cpp 33
Error 7 error C2062: type 'int' unexpected c:\users\jacek\documents\visual studio 2008\projects\testtt\testtt\testtt.cpp 33
Error 8 error C2059: syntax error : ')' c:\users\jacek\documents\visual studio 2008\projects\testtt\testtt\testtt.cpp 33
Error 9 error C2143: syntax error : missing ';' before '{' c:\users\jacek\documents\visual studio 2008\projects\testtt\testtt\testtt.cpp 34
Error 10 error C2447: '{' : missing function header (old-style formal list?) c:\users\jacek\documents\visual studio 2008\projects\testtt\testtt\testtt.cpp 34
Error 12 error C2446: '>' : no conversion from 'int' to 'int *' c:\users\jacek\documents\visual studio 2008\projects\testtt\testtt\testtt.cpp 86
Error 13 error C2040: '>' : 'int *' differs in levels of indirection from 'int' c:\users\jacek\documents\visual studio 2008\projects\testtt\testtt\testtt.cpp 86
Error 14 error C2446: ':' : no conversion from 'int' to 'int *' c:\users\jacek\documents\visual studio 2008\projects\testtt\testtt\testtt.cpp 86

0

Po litanii bzdurnych i nieoczekiwanych błędów "syntax error", "type int unexpected", "missing cośtam before cośtam" itd. kiedy składnia wygląda prawidłowo. To świadczy o tym, że parser się pogubił, a więc że coś nie jest traktowane tak jak na to wygląda. Prawdopodobnie max z nagłówka windows.h jest makrem, które zostało rozwinięte w miejscu w deklaracji twojej funkcji max, i składnia się posypała.

0

nawet na pewno jest makrem.. NOMINMAX albo #undef max to podstawa przy pracy z win.h :(

1 użytkowników online, w tym zalogowanych: 0, gości: 1