From: Vitaliy Geydeko 2:5064/54.2 26 Mar 2018 06:21 +0300
To: All
Subject: fgets/fputs
Привет, All! надо прочитать первую строку файла и записать в другой. использовал сабж но символ / почему-то глотается Vitaliy ... np:МГК - Еще раз про любовь
From: "Rinat H. Sadretdinow" 2:5020/620 05 Jul 2017 07:49 +0300
To: Yury Haron 2:5020/848.23
Subject: const
Hello Yury! 05 Jul 17 02:46, you wrote to me: EM>>>> Типа, компилятор криво применяет const только к одному уровню? YH>>> const тут вторичен. RHS>> Или я что-то непонимаю, или я что-то непонимаю ;-) Hа RHS>> stackoverflow есть разбор почти аналогичного случая и там RHS>> первичен как раз 'const', о двумерности и речи нет: RHS>> https://stackoverflow.com/questions/34488559/pointer-to-array-wi RHS>> th-const- qu alifier-in-c-c YH> Аналогичность, надо понимать, в наличии ругани? :). Hу да, сообщение ведь точно такое же выдаётся, значит компилятор полагает что и ошибка аналогичного рода. Bye!
From: "Rinat H. Sadretdinow" 2:5020/620 04 Jul 2017 14:50 +0300
To: Yury Haron 2:5020/848.23
Subject: const
Hello Yury! 04 Jul 17 01:49, you wrote to Eugene Muzychenko: YH>>> ключевое слово здесь - "двумерного" EM>> Типа, компилятор криво применяет const только к одному уровню? YH> const тут вторичен. Или я что-то непонимаю, или я что-то непонимаю ;-) Hа stackoverflow есть разбор почти аналогичного случая и там первичен как раз 'const', о двумерности и речи нет: https://stackoverflow.com/questions/34488559/pointer-to-array-with-const-qualifier-in-c-c Bye!
From: Eugene Muzychenko 2:5000/14 03 Jul 2017 11:48 +0300
To: Yury Haron 2:5020/848.23
Subject: const
Привет! 03 Jul 17 11:08, you wrote to me: YH> ключевое слово здесь - "двумерного" Типа, компилятор криво применяет const только к одному уровню? EM>> В чем проблема? :) YH> в борьбе с llvm :) А LLVM тут куда? :) Всего доброго! Евгений Музыченко eu-gene@muzy-chen-ko.net (все дефисы убрать)
From: Eugene Muzychenko 2:5000/14 03 Jul 2017 05:03 +0300
To: Yury Haron 2:5020/848.23
Subject: const
Привет! 02 Jul 17 19:03, you wrote to Michael Mamaev: YH> Hеявный кастинг двумерного массива к константному указателю. Кастинг массива к эквивалентному указателю разрешен. Кастинг указателя к эквивалентному константному тоже разрешен. В чем проблема? :) Всего доброго! Евгений Музыченко eu-gene@muzy-chen-ko.net (все дефисы убрать)
From: "Rinat H. Sadretdinow" 2:5020/620 02 Jul 2017 21:19 +0300
To: Eugene Muzychenko 2:5000/14
Subject: const
Hello Eugene! 02 Jul 17 19:39, you wrote to me: MM>>> void f(const double c[3][3]) RS>> Это потому что тут 'const' есть MM>>> double d[3][3]; RS>> А тут 'const' нет. EM> И что с того? :) А с того. Yury Haron тут уже сказал что YH> Hеявный кастинг двумерного массива к константному указателю. И поэтому RS>> Лечится переходом компиляции как исходника C++ EM> Для чего? :) Для того чтобы не было этого варнинга. ~~~ [rhs@sys3175 ~]$ gcc --version gcc (GCC) 6.3.1 20161221 (Red Hat 6.3.1-1) Copyright (C) 2016 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. [rhs@sys3175 ~]$ cat foo.c void f(const double c[3][3]) { } void h(double c[3][3]) { } void g() { double d[3][3]; f(d); h(d); } [rhs@sys3175 ~]$ gcc -c -Wpedantic foo.c foo.c: In function 'g': foo.c:12:5: warning: pointers to arrays with different qualifiers are incompatible in ISO C [-Wpedantic] f(d); ^ [rhs@sys3175 ~]$ ~~~ В функции где 'const double' варнинг есть, где просто 'double' варнинга нет. Теперь компилируем как C++: ~~~ [rhs@sys3175 ~]$ g++ -c -Wpedantic foo.c [rhs@sys3175 ~]$ ~~~ Hигде варнингов нет. И? Bye!
From: Eugene Muzychenko 2:5000/14 02 Jul 2017 15:44 +0300
To: Konstantin Simonov 2:466/466.104
Subject: const
Привет! 02 Jul 17 15:14, you wrote to Rinat H. Sadretdinow: KS> for (i=0;i<3;++i) Зачем было все это добавлять в исходный пример? Вы тут решили перещеголять друг друга по экцентричности подхода? :) Всего доброго! Евгений Музыченко eu-gene@muzy-chen-ko.net (все дефисы убрать)
From: Eugene Muzychenko 2:5000/14 02 Jul 2017 15:39 +0300
To: Rinat H. Sadretdinow 2:5020/620
Subject: const
Привет! 02 Jul 17 13:46, you wrote to Michael Mamaev: MM>> void f(const double c[3][3]) RS> Это потому что тут 'const' есть MM>> double d[3][3]; RS> А тут 'const' нет. И что с того? :) RS> Лечится переходом компиляции как исходника C++ Для чего? :) Всего доброго! Евгений Музыченко eu-gene@muzy-chen-ko.net (все дефисы убрать)
From: Konstantin Simonov 2:466/466.104 02 Jul 2017 15:14 +0300
To: Rinat H. Sadretdinow 2:5020/620
Subject: const
Hello, Rinat! MM>> void f(const double c[3][3]) RHS> Это потому что тут 'const' есть MM>> double d[3][3]; RHS> А тут 'const' нет. MM>>     f(d); const только говорит о том, что массив внутри функции не изменяется. Для интереса сделал такую программку. Файл exp.c: =================================================== #include void f(const double c[3][3]) { int i,j; for (i=0;i<3;++i) { for (j=0;j<3;++j) printf(" %3f", c[i][j]); puts("\n"); } } void main(void) { double d[3][3]; int i,j,k; for (i=0,k=0;i<3;++i) for (j=0;j<3;++j,++k) d[i][j] = k; f(d); } =================================================== С экрана: =================================================== D:\SK_SOFT\Exp>wcl386 -d0 -bc -mf exp.c Open Watcom C/C++32 Compile and Link Utility Version 1.9 Portions Copyright (c) 1988-2002 Sybase, Inc. All Rights Reserved. Source code is available under the Sybase Open Watcom Public License. See http://www.openwatcom.org/ for details. wcc386 exp.c -d0 -bc -mf Open Watcom C32 Optimizing Compiler Version 1.9 Portions Copyright (c) 1984-2002 Sybase, Inc. All Rights Reserved. Source code is available under the Sybase Open Watcom Public License. See http://www.openwatcom.org/ for details. exp.c: 20 lines, included 771, 0 warnings, 0 errors Code size: 160 wlink @__wcl__.lnk Open Watcom Linker Version 1.9 Portions Copyright (c) 1985-2002 Sybase, Inc. All Rights Reserved. Source code is available under the Sybase Open Watcom Public License. See http://www.openwatcom.org/ for details. loading object files searching libraries creating a Windows NT character-mode executable D:\SK_SOFT\Exp>exp.exe 0.000000 1.000000 2.000000 3.000000 4.000000 5.000000 6.000000 7.000000 8.000000 =================================================== MM>> P.S. Сомневаюсь, что это важно, но на всякий слyчай: pure C. RHS> Это как раз и важно. Лечится переходом компиляции как исходника C++ В данном случае это совершенно не важно. При компиляции .cpp лишь появилось предупреждение exp.cpp(14): Warning! W914: col(1) 'main' must return 'int' WBR, Konstantin.
From: "Rinat H. Sadretdinow" 2:5020/620 02 Jul 2017 13:46 +0300
To: Michael Mamaev 2:5050/57
Subject: const
Hello Michael! 01 Jul 17 16:15, you wrote to All: MM> void f(const double c[3][3]) Это потому что тут 'const' есть MM> double d[3][3]; А тут 'const' нет. MM>     f(d); MM> P.S. Сомневаюсь, что это важно, но на всякий слyчай: pure C. Это как раз и важно. Лечится переходом компиляции как исходника C++ Bye!