Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
#1

Переопределение типа - C++

06.02.2013, 15:05. Просмотров 797. Ответов 6
Метки нет (Все метки)

В windows.h все типы имеют переопределения вида LONG, UCHAR и так далее. Понятно, что это обычные типы long и unsigned char, но вот в чем дело. Частенько (но не всегда) сталкивался с примерно подобным:
C++
1
2
3
4
5
6
7
8
9
void f(UCHAR uchr)
{
}
 
void main()
{
unsigned char uchr;
f(uchr); // warning - conversion unsigned char to UCHAR
}
И вот сейчас решил попробовать специально вызвать такое сообщение, но как бы я не переопределял (ни typedef, ни define) не вызывают такого. Почему? Или я что-то путаю?
p.s typedef тоже препроцессором обрабатывается и разницы (кроме удобства) между define / typedef нет?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.02.2013, 15:05     Переопределение типа
Посмотрите здесь:

Переопределение типа class - C++
Подскажите в чем ошибка??? Не могу никак разобраться. "Ошибка 1 error C2011: zvetnik: переопределение типа...

Переопределение типа(typedef) - C++
Не как не могу разобраться что такое StartDLL/Startup в данном случае typedef void (*Startup)(); Startup StartDll; ...

Ошибка "error C2011: переопределение типа" - C++
struct Tunit { public : int team; int team_agricultural; POINT location; POINT moveLocation; float max_helf; ...

Переопределение типа "class" - C++
Как я понял, ошибка "переопределение типа "class"" означает что класс уже был где-то объявлен, однако у меня он вроде нигде больше не...

переопределение типа "class" - C++
У меня такая ошибка возникает: переопределение типа "class" Знаю из-зи чего, а убрать не могу: Есть файл 1.h и 1.cpp в котором...

Переопределение функций - C++
Вопрос вот в чем. У меня есть в классе Character функция: virtual void Crouch(bool bClientSimulation); Вопрос вот в чем. Могу ли я...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-=ЮрА=-
Заблокирован
Автор FAQ
06.02.2013, 15:14     Переопределение типа #2
Цитата Сообщение от nexen Посмотреть сообщение
unsigned char to UCHAR
- это один и тот же тип!
Теперь вопрос - что ты хочешь, зачем тебе ворнинг?

Не по теме:

PS:

Цитата Сообщение от nexen Посмотреть сообщение
Частенько (но не всегда) сталкивался с примерно подобным:
void f(UCHAR uchr)
{
}
void main()
{
unsigned char uchr;
f(uchr); // warning - conversion unsigned char to UCHAR
}
покажи конкретно на примере с чем ты сталкивался

Миниатюры
Переопределение типа  
-=ЮрА=-
Заблокирован
Автор FAQ
06.02.2013, 15:16     Переопределение типа #3
Цитата Сообщение от nexen Посмотреть сообщение
(кроме удобства) между define / typedef нет?
- колосальнейшая разница
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
06.02.2013, 15:17  [ТС]     Переопределение типа #4
-=ЮрА=-, я же написал, я знаю, что это один и тот же тип. Но warning'и я получал все равно. Вопрос: почему?
И ещё есть вопрос про препроцессор же.
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
- колосальнейшая разница
- совсем не ответ.
-=ЮрА=-
Заблокирован
Автор FAQ
06.02.2013, 15:21     Переопределение типа #5
def вставит в код то что за ним бездумно (там может быть и функция и класс и всё что угодно)
type же используется для объявления новых типов

Добавлено через 3 минуты
Цитата Сообщение от nexen Посмотреть сообщение
Но warning'и я получал все равно. Вопрос: почему?
- где ты их получал?В досовском Борланд Си или где - покажи конкретно, я допустим нигде таких не получал и пытаюсь представить на чём таком писался код что были данные предупреждения

Не по теме:

Цитата Сообщение от nexen Посмотреть сообщение
совсем не ответ.
- возможно это побужние погуглить да самому понять разницу...

-=ЮрА=-
Заблокирован
Автор FAQ
06.02.2013, 15:26     Переопределение типа #6
Цитата Сообщение от nexen Посмотреть сообщение
колосальнейшая разница
- совсем не ответ.
Цитата Сообщение от nexen Посмотреть сообщение
typedef тоже препроцессором обрабатывается и разницы (кроме удобства) между define / typedef нет?
Раскоменть комент в коде да погляди сам есть или нет разницы
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <cmath>
#include <iostream>
using namespace std;
 
#define nexen1(x) asin(x)
//typedef nexen2(x) asin(x)
 
int main()
{
    cout<<nexen1(1.0)<<endl;
    return 0;
}
Миниатюры
Переопределение типа  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.02.2013, 15:28     Переопределение типа
Еще ссылки по теме:

Переопределение операторов - C++
Доброго времени суток.. В древние времена, когда ещё жили мамонты, ковырял я потихоньку плюсы.. Потом был долгий перерыв, и, как итог -...

Переопределение операций - C++
У меня есть класс, который хранит коэффициенты полинома, вычисляет его. Я попытался добавить оператор суммы (который по моей версии должен...

Переопределение оператора == - C++
Здравствуйте. Такая проблема: для поиска требуется сравнить два числа(в 1-ом случае инты, во 2-ом даблы). Для интов все отлично, а для...

Переопределение операций - C++
Здравствуйте, необходимо осуществить переопределение операции сложения, не понимаю как применять на практике переопределение, заранее...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
MrGluck
Модератор
Эксперт CЭксперт С++
6997 / 4168 / 594
Регистрация: 29.11.2010
Сообщений: 11,047
06.02.2013, 15:28     Переопределение типа #7
mingw и gcc варнингов по конкретно этому поводу не дают.
Вот такой код:
C++
1
2
3
4
5
6
7
8
9
typedef unsigned char UCHAR;
 
void f(UCHAR uchr){}
 
int main()
{
unsigned char uchr;
f(uchr); // warning - conversion unsigned char to UCHAR
}
выдает
Код
D:\My works in C++\123.cpp||In function 'void f(UCHAR)':|
D:\My works in C++\123.cpp|3|warning: no previous declaration for 'void f(UCHAR)' [-Wmissing-declarations]|
D:\My works in C++\123.cpp|3|warning: unused parameter 'uchr' [-Wunused-parameter]|
D:\My works in C++\123.cpp||In function 'int main()':|
D:\My works in C++\123.cpp|8|warning: 'uchr' is used uninitialized in this function [-Wuninitialized]|
||=== Build finished: 0 errors, 3 warnings ===|
Yandex
Объявления
06.02.2013, 15:28     Переопределение типа
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru