Определите по умолчанию int для unsigned int - PullRequest
0 голосов
/ 04 января 2012

Как я могу (, если могу ) установить для переменной int по умолчанию (в конкретной программе) значение unsigned int?

Я имею в виду, что если int написано в программе, компилятор обрабатывает его как unsigned int.

Мой компилятор gcc 4.6.2

РЕДАКТИРОВАТЬ: я не уполномочен касаться кода.

Ответы [ 2 ]

3 голосов
/ 04 января 2012

Вы не можете изменить подпись по умолчанию int, потому что это по определению тип со знаком (§6.2.5 / 4).Рассмотрим функцию main, которая должна возвращать тип int (§5.1.2.2.1 / 1), если вы каким-либо образом измените подпись по умолчанию, то main вернет unsigned int, и это приведет к неопределенному поведению, отрисовываявсе ваше приложение относительно бесполезно.

Вы не можете создать макрос, потому что если int расширяется до unsigned int, то, если вы где-то объявили unsigned int, вы получите unsigned unsigned int,который не является допустимым типом.

1 голос
/ 04 января 2012

Супер-зло

#define int unsigned int

может работать, но определенно не соответствует стандарту, и вам может потребоваться сделать ваш компилятор менее строгим (что плохо).

Другие вещи, которые вы можете сделать, это найти и заменить все вхождения int (без предшествующего unsigned) и заменить их на my_typedefed_int и добавить

typedef unsigned int my_typedefed_int

, который соответствует стандарту, но более сложени может быть невозможным.

...