LINUX.ORG.RU

История изменений

Исправление Kroz, (текущая версия) :

У тебя просматривается 2 проблемы:
1. Неверный выбор языка. Си изначально был заточен на то, чтобы использовать специфику платформы, и исключить всякие неявные преобразования. В этом плане я рассматриваю Си как «прокачанный» ассемблер. Нужна переносимость - бери C++ (или другой высокоуровневый язык, благо их нынче наплодилось). C++, правда, тоже нужно уметь пользоваться. И, поверь, поначалу ты им будешь пользоваться неправильно: скажутся Си-шны привычки.
2. Недостаточное использование средств языка/библиотек. См про типы ниже.

Я однажды неплохо (как мне казалось) поднатаскался на Си. Потом мне в руки попалась книга Искусство программирования на C. И после прочтения первых страниц, я понял, что программировать не умею. Хотя там предполагалось, что язык ты знаешь. Там описалось не про лексемы языка или библиотеки, там писалось про то, как программировать...

знание того что где то long 64bit, а где то 32bit

Для этого используются константы: https://stackoverflow.com/questions/2053843/min-and-max-value-of-data-type-in-c

И вообще я периодически просматриваю код, и стараюсь чтобы чисел не было нигде кроме #define, const, constexpr , ну, кроме самых тривиальных случаев.

libc Эмм, с89/с99/с11 где то напрямую отказываются от поддержки стандарта msvc не хочет с99 реализовывать в полной мере, тоесть уже нет гарантий, ладно на дворе почти 2018 надо с11, но и тут glibc не имеет <threads.h>

А поэтому, если ты озаботился переносимостью, нужно либо писать на самом «низком» стандарте, либо оборачивать нововведения в свои функции. Ни то ни то не является приятным вариантом, поэтому лучше с самого начала определить под какие компиляторы/платформы будешь писать.

Исправление Kroz, :

У тебя просматривается 2 проблемы:
1. Неверный выбор языка. Си изначально был заточен на то, чтобы использовать специфику платформы, и исключить всякие неявные преобразования. В этом плане я рассматриваю Си как «прокачанный» ассемблер. Нужна переносимость - бери C++, или другой высокоуровневый язык, благо их нынче наплодилось. Им, правда, тоже нужно уметь пользоваться. И, поверь, поначалу ты им будешь пользоваться неправильно: скажутся Си-шны привычки.
2. Недостаточное использование средств языка/библиотек. См про типы ниже.

Я однажды неплохо (как мне казалось) поднатаскался на Си. Потом мне в руки попалась книга Искусство программирования на C. И после прочтения первых страниц, я понял, что программировать не умею. Хотя там предполагалось, что язык ты знаешь. Там описалось не про лексемы языка или библиотеки, там писалось про то, как программировать...

знание того что где то long 64bit, а где то 32bit

Для этого используются константы: https://stackoverflow.com/questions/2053843/min-and-max-value-of-data-type-in-c

И вообще я периодически просматриваю код, и стараюсь чтобы чисел не было нигде кроме #define, const, constexpr , ну, кроме самых тривиальных случаев.

libc Эмм, с89/с99/с11 где то напрямую отказываются от поддержки стандарта msvc не хочет с99 реализовывать в полной мере, тоесть уже нет гарантий, ладно на дворе почти 2018 надо с11, но и тут glibc не имеет <threads.h>

А поэтому, если ты озаботился переносимостью, нужно либо писать на самом «низком» стандарте, либо оборачивать нововведения в свои функции. Ни то ни то не является приятным вариантом, поэтому лучше с самого начала определить под какие компиляторы/платформы будешь писать.

Исходная версия Kroz, :

У тебя просматривается 2 проблемы:
1. Неверный выбор языка. Си изначально был заточен на то, чтобы использовать специфику платформы, и исключить всякие неявные преобразования. В этом плане я рассматриваю Си как «прокачанный» ассемблер. Нужна переносимость - бери C++. Им, правда, тоже нужно уметь пользоваться. И, поверь, поначалу ты им будешь пользоваться неправильно: скажутся Си-шны привычки.
2. Недостаточное использование средств языка/библиотек. См про типы ниже.

Я однажды неплохо (как мне казалось) поднатаскался на Си. Потом мне в руки попалась книга Искусство программирования на C. И после прочтения первых страниц, я понял, что программировать не умею. Хотя там предполагалось, что язык ты знаешь. Там описалось не про лексемы языка или библиотеки, там писалось про то, как программировать...

знание того что где то long 64bit, а где то 32bit

Для этого используются константы: https://stackoverflow.com/questions/2053843/min-and-max-value-of-data-type-in-c

И вообще я периодически просматриваю код, и стараюсь чтобы чисел не было нигде кроме #define, const, constexpr , ну, кроме самых тривиальных случаев.

libc Эмм, с89/с99/с11 где то напрямую отказываются от поддержки стандарта msvc не хочет с99 реализовывать в полной мере, тоесть уже нет гарантий, ладно на дворе почти 2018 надо с11, но и тут glibc не имеет <threads.h>

А поэтому, если ты озаботился переносимостью, нужно либо писать на самом «низком» стандарте, либо оборачивать нововведения в свои функции. Ни то ни то не является приятным вариантом, поэтому лучше с самого начала определить под какие компиляторы/платформы будешь писать.