[過去ログ] Visual Studio 2017 Part5 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
129: (ワッチョイ d723-MOYc) 2018/03/17(土)13:43 ID:GkqhEyPw0(1) AAS
<cstdio>なら自分の名前空間に同名の関数作れるのかな?
どちらにしろ型が違うから多重定義出来そうな気はするけど
130: (ワッチョイ 4d04-Ue6H) 2018/03/17(土)14:00 ID:V9AqDEvW0(1/4) AAS
printfの宣言は、
printf(char*, ....);
だったと思うので、>>118は、未定義だ。
タマタマ0になっただけ。
NULLが渡ってるわけでもないので暴走してもおかしくない。
131: (アウアウエー Sa93-/aqA) 2018/03/17(土)14:05 ID:Qo78by//a(1) AAS
Visual Studioならコンパイルで怒られて終了なのでは?
標準関数だったとして、この書き方で通るコンパイラあるのかな?
132: (ワッチョイ 4d04-Ue6H) 2018/03/17(土)14:09 ID:V9AqDEvW0(2/4) AAS
一応、可変長引数は引数0でも受け付ける。
コンパイラマジックでいじって無ければcharポインタに何らかの整数が入って>>118は暴走する。
133: (ワッチョイ 4d04-Ue6H) 2018/03/17(土)14:10 ID:V9AqDEvW0(3/4) AAS
外部リンク[aspx]:msdn.microsoft.com
134: (ワッチョイ 5306-kvKg) 2018/03/17(土)14:39 ID:QHH0QBeE0(1) AAS
三田典玄を思い出した
135: (ブーイモ MMf3-MOYc) 2018/03/17(土)16:15 ID:oSTrhaKhM(1/2) AAS
>>118
それってただのいちゃもんだよね
仕様書見たりして勉強しなおしたほうがいいよ…
136: (アウアウエー Sa93-0FUd) 2018/03/17(土)16:41 ID:cWw1OMJaa(1) AAS
>>125
>>128

正解
137: (ワッチョイ 4d04-Ue6H) 2018/03/17(土)16:47 ID:V9AqDEvW0(4/4) AAS
標準ライブラリの名前を使うなよ。ボギャ貧。
衝突したときどうするんだよ。
138: (ワッチョイ e319-9DoS) 2018/03/17(土)22:24 ID:8CYph5yz0(1) AAS
たった3行のコードでここまで叩かれるとか
こいつはプログラム書くなってレベルだな
139: (ブーイモ MMf3-MOYc) 2018/03/17(土)22:42 ID:oSTrhaKhM(2/2) AAS
cやc++は魔界なんだ
それを理解しないで偉そうにバグだ修正しろと言うとこういうことになる
140: (ワッチョイ 8781-hKdO) 2018/03/17(土)22:48 ID:rZWTmc0S0(1) AAS
愛の鞭、励ましの言葉ではないかと
141: (スププ Sd2f-b7Qs) 2018/03/17(土)23:27 ID:4zm/Hii4d(1) AAS
つーかなんであんなコードコンパイルしてwarning出ないんだよ
142
(2): (ワッチョイ f3b3-opPu) 2018/03/17(土)23:29 ID:KpeS82sv0(1) AAS
>>118
#include <stdio.h>
#include <string.h>

int main()
{
  char *a = "foo";
  char *b = "bar";

  if (strcmp(a, b) != 0) {
    printf("%d", strcmp(a, b)); /* -> 1 */
  }

  return 0;
}
143
(1): 片山博文MZ◆T6xkBnTXz7B0 (スフッ Sdd7-5vKF) 2018/03/17(土)23:36 ID:6umCop+Md(1) AAS
>>142
const char *a = "foo";
const char *b = "bar";
もしくは
char a[] = "foo";
char b[] = "bar";
144
(2): (ワッチョイ 7f81-hKdO) 2018/03/17(土)23:54 ID:6YFzNXRG0(1) AAS
慣習的にコンパイルは通るが、
いまだに ポインタ = 文字列 なコード書く馬鹿いるんだな
145: (ワッチョイ 9f83-MOYc) 2018/03/18(日)00:05 ID:olLxGKeA0(1/2) AAS
未だにこういう面倒なこと言う馬鹿もいるんだな
146: (ワッチョイ e319-9DoS) 2018/03/18(日)00:06 ID:/LzI7Sk/0(1) AAS
Cならスパゲッティコードも当たり前
オマエはキッチュイーターか
147: (ワッチョイ 6b3b-G0Zw) 2018/03/18(日)00:14 ID:dP+kxVHP0(1) AAS
>>144
うざい
148: (ブーイモ MMf3-MOYc) 2018/03/18(日)01:20 ID:EuAIJOKrM(1) AAS
strncmp使わんの?
149: (アウアウウー Saaf-0FUd) 2018/03/18(日)01:38 ID:+zU+iCTEa(1) AAS
C++(Win32)でもVS2017のテスト機能は使用可能?
150
(1): (ワッチョイ f3b3-opPu) 2018/03/18(日)01:58 ID:vTP8CpkY0(1/4) AAS
>>142で、*(a + 1) = 'x';した後のaが"fxo"にならないのは何故?
151
(1): (ワッチョイ f3b3-opPu) 2018/03/18(日)02:31 ID:vTP8CpkY0(2/4) AAS
ついでに>>143で、constの場合はコンパイルエラー、char []の場合は"fxo"になります
152: (ワッチョイ 39e9-1wfI) 2018/03/18(日)02:57 ID:JqVGKsgJ0(1) AAS
初心者スレへ行くべきじゃないの
153: (ワッチョイ a723-tAvx) 2018/03/18(日)03:09 ID:95A2sExk0(1) AAS
そこで無意味に+1しなければ多少は智慧者扱いされただろうにな
154
(1): (ワッチョイ f3b3-opPu) 2018/03/18(日)03:56 ID:vTP8CpkY0(3/4) AAS
因みにgcc 5.3.0だと、char *の*(a + 1) = 'x';で Segmentation fault、全てのstrcmp(a, b)で4、以外は変わらずでした
155
(1): (ワッチョイ f3b3-opPu) 2018/03/18(日)04:43 ID:vTP8CpkY0(4/4) AAS
>>144
char *a = "foo"; って書くと、>>150>>151>>154のように、aに書き換え不可領域の"foo"のアドレスが代入されます
char a[] = "foo"; って書くと、書き換え不可領域の"foo"のサイズ(4バイト)を計算、書き換え可能領域にメモリを確保、"foo"をコピー、そのアドレスがaに代入されます
156
(2): (ワッチョイ 5306-AQ07) 2018/03/18(日)06:49 ID:Pb4lbiqE0(1) AAS
>>155
まあこれが回答なんだけど、これは今はそうであるだけで昔は実行できたよね。
言語仕様としてどこかで定義されたのだろうか?
コンパイルエラーにもならないところを見ると、未だに言語仕様にはなっておらず暗黙の了解なんだろうか?
157: (ドコグロ MM03-tgc5) 2018/03/18(日)08:28 ID:Vy5WxvpvM(1) AAS
>>156
> 言語仕様としてどこかで定義されたのだろうか?
未定義って定義されてたはず
ちなみに未定義動作なので
> 昔は実行できた
> コンパイルエラーにもならない
等々は全て正しい挙動
もちろん
・実行時エラーになる
・コンパイル時エラーになる
等々も正しい
158: (ワッチョイ a3e2-hKdO) 2018/03/18(日)08:41 ID:EbHOfvBT0(1/3) AAS
>>156
昔は実行できた? ちげーよ
static char a[] = "foo";
昔はこう書かなきゃコンパイルエラーだった
1-
あと 844 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.023s