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!