|
|
|
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
|
|||
|---|---|---|---|
|
#18+
SashaMercury, а почему тебя вообще так "парит" этот вопрос? Так и хочется тебе сказать - "не парься!" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2014, 16:29:52 |
|
||
|
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
|
|||
|---|---|---|---|
|
#18+
egorychВывод: в прикладном коде лучше не использовать такие идентификаторы в глобальном пространстве имён, а вот в общеупотребительных библиотеках - это наоборот, вполне допустимая практика, и более того, желательная Это как правила хорошего тона в обществе джетльменов. Тоесть ты конечно-же можешь "запилить" code-style аля obfuscation. Но рано или поздно посмотрят как на дебила. Кому плохо сделал? Себе наверное. Или что, латиницы не хватило? Малобукв? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2014, 16:33:00 |
|
||
|
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
|
|||
|---|---|---|---|
|
#18+
mayton, Я бы сказал, что "математика учит обращать внимание на самое важное", но не буду ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2014, 16:33:08 |
|
||
|
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
|
|||
|---|---|---|---|
|
#18+
maytonТоесть ты конечно-же можешь "запилить" code-style аля obfuscation. Но рано или поздно посмотрят как на дебила. Кому плохо сделал? Себе наверное. Или что, латиницы не хватило? Малобукв?Многабукав. А теперь смотрим включаемые файлы компиляторов и (g)clib/SDK - обфускация на марше. А всё потому, что в этих включаемых файлах - не всегда тривиальные косвенные определения. И подчерки служат той же цели, что и красный сигнал световора: "Не лезь сюда! Здесь опасно". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2014, 16:44:50 |
|
||
|
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
|
|||
|---|---|---|---|
|
#18+
egorychSashaMercuryBasil A. Sidorov, не могли бы вы объяснить, что вы хотите сказатьон хочет сказать, что, хотя WinSDK и не является частью стандартной библиотеки С, там всё же используются идентификаторы, начинающиеся с __ и с _Большая-буква. Равно, как и в некоторых других библиотеках. а мне кажется, разработчики WinSDK не соблюдают требования стандарта и нарушают законы. Они должны были использовать свой префикс, как и писал Диомидис Спинеллис. egorychВывод: в прикладном коде лучше не использовать такие идентификаторы в глобальном пространстве имён, а вот в общеупотребительных библиотеках - это наоборот, вполне допустимая практика, и более того, желательная опять таки, про общеупотребительные библиотеки, в стандарте не сказано что в этих библиотеках можно использовать таки префиксы. С11 7.1.3 Reserved identifiers ... — All identifiers that begin with an underscore and either an uppercase letter or another underscore are always reserved for any use. — All identifiers that begin with an underscore are always reserved for use as identifiers with file scope in both the ordinary and tag name spaces. Вывод: в прикладном коде и в общеупотребительных библиотеках нельзя использовать такие префиксы. PS Это не мои выводы. Это говорит стандарт языка Си. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2014, 01:47:44 |
|
||
|
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
|
|||
|---|---|---|---|
|
#18+
maytonSashaMercury, а почему тебя вообще так "парит" этот вопрос? Так и хочется тебе сказать - "не парься!" Дело в том, что мне нравится этот язык, и я не могу закрыть на что-то глаза. Каждая деталь важна ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2014, 01:59:37 |
|
||
|
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovskymayton, Я бы сказал, что "математика учит обращать внимание на самое важное", но не буду C: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2014, 02:00:49 |
|
||
|
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
|
|||
|---|---|---|---|
|
#18+
SashaMercuryВывод: в прикладном коде и в общеупотребительных библиотеках нельзя использовать такие префиксы. PS Это не мои выводы. Это говорит стандарт языка Си. Это не совсем так. Стандарт описывает что и с какими именами должна содержать реализация языка. При этом реализация вполне может содержать и другие возможности, не описанные в стандарте, и вот они должны подчиняться именованию с подчеркиванием. WinSDK это часть реализации языка С/С++ на платформе Windows в VS (без нее невозможно писать программы под винду). Поэтому она не считается какой-то там пользовательской библиотекой и имеет право на использование префиксов __ для огораживания своих внутренностей от пользовательского кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2014, 02:28:52 |
|
||
|
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
|
|||
|---|---|---|---|
|
#18+
SashaMercuryКаждая деталь важна и умение отличать первостепенное от второстепенного ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2014, 05:08:52 |
|
||
|
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskySashaMercuryВывод: в прикладном коде и в общеупотребительных библиотеках нельзя использовать такие префиксы. PS Это не мои выводы. Это говорит стандарт языка Си. Это не совсем так. Стандарт описывает что и с какими именами должна содержать реализация языка. При этом реализация вполне может содержать и другие возможности, не описанные в стандарте, и вот они должны подчиняться именованию с подчеркиванием. WinSDK это часть реализации языка С/С++ на платформе Windows в VS (без нее невозможно писать программы под винду). Поэтому она не считается какой-то там пользовательской библиотекой и имеет право на использование префиксов __ для огораживания своих внутренностей от пользовательского кода. Понимаю вас. Тем не менее у меня остались противоречия по этому вопросу, но они связаны с тем, что я не вижу всю картину. Потому, я запомню это, и в будущем ещё подумаю над этим вопросом. Спасибо. PS Использует ли кто-нибудь свои префиксы для предотвращения нарушения ODR в своих программах ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2014, 05:53:04 |
|
||
|
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
|
|||
|---|---|---|---|
|
#18+
SashaMercuryИспользует ли кто-нибудь свои префиксы для предотвращения нарушения ODR в своих программах ? тынц , и тынц ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2014, 09:19:48 |
|
||
|
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
|
|||
|---|---|---|---|
|
#18+
egorych, вы шутите, давая ссылку на венгерскую нотацию ?) Этот вопрос не в рамках того что такое венгерская нотация, а в рамках этого отрывка из книги Спинеллиса SSRWolfSashaMercury, Всё, что начинается с двух подчёркиваний, зарезервировано стандартом под компилятороспецифичные идентификаторы. Наконец-то я прочитал что-то про эти подчёркивания в литературе. Diomidis SpinellisCode Reading: The Open Source Perspective 9.3.2 Namespaces An important concept of a module is the principle of information hiding, prescribing that all information related to a module should be private to it unless it is specifically declared to be public. In C modules implemented as a single file you will find that global identifiers are declared with the static keyword to limit their visibility to a single compilation unit (file). Код: plaintext 1. 2. 3. However, this technique does not prevent identifiers used in header files from leaking to the files that include them. As an example, in the C and C++ language a typedef or a preprocessor macro definition in a header file may result in a clash when another file defines a global function or variable with the same name. Although some cases can be solved by renaming the offending identifier in the program being developed, others, where two different existing modules clash with each other, can be difficult to solve since they may not fall under the developer's control. Consider the (contrived) example of compiling the following code. Код: plaintext 1. 2. The two header files included both define a uch identifier, thus creating the following error. libc/regex/utils.h:46: redefinition of `uch' libz/zutil.h:36: `uch' previously declared here This problem of namespace pollution is solved in a number of ad hoc ways in the C language; other languages like Ada, C++, Eiffel, Java, Perl, and the Modula family provide specific constructs for combatting this problem. A common solution for curbing the namespace pollution, without the need for additional language-provided facilities, involves prefixing identifiers with a certain unique prefix. Notice how in the example below all type, function, and macro identifiers of the rnd.h header file are prefixed with an rnd prefix. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. In fact, the prefix method of identifier isolation is officially sanctioned by the ANSI C standard by reserving all identifiers starting with an underscore character (_) for use by the language implementation. When reading a library header you will notice that all identifiers start with an underscore, thus being kept separated from any identifiers a user might define. Код: plaintext 1. 2. 3. 4. Although in the above example the _base and _size structure tags belong—according to ANSI C—in a separate namespace (that of the __sbuf structure tags), they still need to be prefixed with an underscore since they might clash with macro definitions. To avoid the problems we described above you will find that modern C++ programs often make use of the namespace functionality. Таким образом, это искусственный элемент. Используете ли вы префиксы в своей работе ? (провёл аналогию с БД, мне например не нравится когда к атрибутам отношения добавляют префикс, не вижу в этом смыла, хотя возможно просто чего-то не знаю) Хотя, в данном случае, дело не в нравится/не нравится, а в необходимости связанной с ODR(One Definiton Rule). имеется ввиду, используете ли вы префиксы в своей работе для того, о чём говорит Спинеллис ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2014, 09:41:22 |
|
||
|
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
|
|||
|---|---|---|---|
|
#18+
SashaMercuryиспользуете ли вы префиксы в своей работе для того, о чём говорит Спинеллися живу в мире С++, у меня там для этого есть пространства имён ))) хотя использую при именовании исходных файлов и элементов перечисления, а также иногда пользуюсь в смысле второй моей ссылки от Спольски в языках, где нет подходящих языковых конструкций. Имеется ввиду вот что: Код: sql 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2014, 10:03:57 |
|
||
|
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
|
|||
|---|---|---|---|
|
#18+
SashaMercurymaytonSashaMercury, а почему тебя вообще так "парит" этот вопрос? Так и хочется тебе сказать - "не парься!" Дело в том, что мне нравится этот язык, и я не могу закрыть на что-то глаза. Каждая деталь важна ОКИ. Не потони в деталях. Особенно когда будешь изучать различные API. Это уже за рамками стандарта С. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2014, 12:18:20 |
|
||
|
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
|
|||
|---|---|---|---|
|
#18+
egorych, т.е. вы используете пространства имён, как и говорит далее Спинеллис(последняя строчка процитированного). Спасибо, что поделились опытом :) mayton, оки-доки-артишоки :D хорошо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2014, 01:59:46 |
|
||
|
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
|
|||
|---|---|---|---|
|
#18+
Сегодня мне понадобилась функция fscanf. Точнее то, что она возвращает. ISO/IEC 9899:201x 7.21.6.2 The fscanf function 16The fscanf function returns the value of the macro EOF if an input failure occurs before the first conversion (if any) has completed. Otherwise, the function returns the number of input items assigned, which can be fewer than provided for, or even zero, in the event of an early matching failure. Приведите пожалуйста пример, когда она вернёт EOF. У меня не получилось ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 07:46:07 |
|
||
|
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
|
|||
|---|---|---|---|
|
#18+
SashaMercury, файл пустой, например. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2015, 10:26:34 |
|
||
|
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
|
|||
|---|---|---|---|
|
#18+
Спасибо, сработало. Странно, ранее, я читал все что было в файле, доходил до конца. И снова делал fscanf, однако -1 почему-то не возвращалось. Например файл содержал 100 temp EOF Делал так Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2015, 01:52:35 |
|
||
|
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Достаточно часто в целочисленных алгоритмах встречается деление целых чисел, и в частности, часто необходимо найти как остаток от деления, так и целую часть. Приходится использовать два мультипликативных оператора: Код: plaintext 1. 2. Аналогичные результаты можно получить после нахождения целой части с помощью элементарных арифметических операций, например. Предполагаю, что реализация операторов % и / может позволить получить оба значения за одно действие. Возможно потребуются ассемблерные вставки. Правильно ли я предполагаю ? Как вы поступаете в таком случае ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2015, 03:33:16 |
|
||
|
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
|
|||
|---|---|---|---|
|
#18+
В стандарте не нашел ничего об этом,жаль ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2015, 03:36:21 |
|
||
|
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
|
|||
|---|---|---|---|
|
#18+
SashaMercuryВозможно потребуются ассемблерные вставки. Правильно ли я предполагаю ? Как вы поступаете в таком случае ? Поступаем так: Код: plaintext 1. 2. Ассемблерные вставки не требуются. Это забота компилятора использовать возможности процессора для вычисления выражений за одну операцию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2015, 05:26:32 |
|
||
|
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskySashaMercuryВозможно потребуются ассемблерные вставки. Правильно ли я предполагаю ? Как вы поступаете в таком случае ? Поступаем так: Код: plaintext 1. 2. Ассемблерные вставки не требуются. Это забота компилятора использовать возможности процессора для вычисления выражений за одну операцию. т.е. по факту деление будет происходить один раз ? Вторая операция потребует время только на доступ к ячейке памяти, а не на вычисление ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2015, 06:37:55 |
|
||
|
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
|
|||
|---|---|---|---|
|
#18+
SashaMercuryт.е. по факту деление будет происходить один раз ? Вторая операция потребует время только на доступ к ячейке памяти, а не на вычисление ? Стандарт не обязывает компиляторы делать оптимизации. Поэтому что будет по факту, зависит от компилятора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2015, 07:13:49 |
|
||
|
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
|
|||
|---|---|---|---|
|
#18+
SashaMercuryЗдравствуйте. Достаточно часто в целочисленных алгоритмах встречается деление целых чисел, и в частности, часто необходимо найти как остаток от деления, так и целую часть. Приходится использовать два мультипликативных оператора: Код: plaintext 1. 2. Аналогичные результаты можно получить после нахождения целой части с помощью элементарных арифметических операций, например. Предполагаю, что реализация операторов % и / может позволить получить оба значения за одно действие. Возможно потребуются ассемблерные вставки. Правильно ли я предполагаю ? Как вы поступаете в таком случае ? Если очень хочется работать "без потери точности", можно использовать <ratio> . За деление и остаток от него можно не беспокоиться. Пересылка регистр-память стоит всё равно гораздо дороже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2015, 07:26:26 |
|
||
|
INTERNATIONAL STANDARD ISO/IEC ISO/IEC 9899:201x Вопросы и комментарии
|
|||
|---|---|---|---|
|
#18+
SashaMercury Код: plaintext 1. 2. Предполагаю, что реализация операторов % и / может позволить получить оба значения за одно действие. Возможно потребуются ассемблерные вставки. Правильно ли я предполагаю ? Как вы поступаете в таком случае ? Правильно предполагаешь. Процессор может посчитать одной командой http://www.kolasc.net.ru/cdo/programmes/assembler/div.html ИМХУ писать надо как ты написал. Думаю компилятор сам догадается что этот код одной командой можно выполнить. Даже если не догадается - процессор при вычислении может это параллельно посчитать и разницы не будет. По большому счету нет смысла заморачиваться, как выше подмечено: пересылка результата в память гораздо медленнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2015, 08:06:40 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38801588&tid=2018847]: |
0ms |
get settings: |
5ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
248ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 197ms |
| total: | 508ms |

| 0 / 0 |
