На протяжении всей программы необходимо работать с большими данными, но писать вместо int везде long long int крайне неудобно. Слышал про способ с использованием #define. Написал:
#define int long long int
Но выдает ошибку, мол, функция main должна возвращать тип int. Как исправить?
Создайте новый тип, вернее, синоним типа. Что-то вроде
typedef long long int large;
или
using large = long long int;
Ну, или используйте вместо large
какое-то иное имя. И Используйте его везде, где нужно. Если потом нужно будет его заменить - это можно будет сделать в месте определения и все.
Заменять глобально все int
на long long int
- как и вообще любое ключевое слово на что-то иное - решение, чреватое большими неприятностями...
#define
крайне не практично, для этого есть typedef
#include <iostream>
typedef long long int64;
typedef unsigned long long uint64;
int main()
{
int64 a = 9223372036854775807;
uint64 b = 18446744073709551615;
std::cout << a << std::endl;
std::cout << b << std::endl;
}
Но можно воспользоваться ванильными int64_t
или uint64_t
#include <iostream>
int main()
{
int64_t a = 9223372036854775807;
uint64_t b = 18446744073709551615;
std::cout << a << std::endl;
std::cout << b << std::endl;
}
Никак. Никаких осмысленных способов "подменить" ключевое слово языка не существует. И препроцессор вам в этом не поможет. Если код напрямую ссылается на фундаментальные типы, то "подменить" эти типы не получится.
Переписывайте код так, чтобы вместо прямого использования фундаментальных типов он использовал имена-псевдонимы, определенные вами через typedef
(или using
). В таком варианте вы сможете легко подменять типы так, как вам заблагорассудится.
Правильное использование таких имена-псевдонимов потребует бОльших усилий, чем просто определения typedef
, но ничего из ряда вон выходящего там нет.
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
Просьба помочь в настройке jenkins для запуска автотестов Java+Selenium+Cucumber Локально тесты запускаются а вот запустить на Jenkins не получаетсяPom Использую...
Судя по всему у вас в массив employers лежит null после работника с именем "b"Посмотрите, как он мог туда попасть