Thread overview
C++ fazladan ; kullanmak
Feb 03, 2016
erdem
Feb 03, 2016
ertseyhan
February 03, 2016
#include <iostream>
#include <string>

using namespace std;

int main()
{

   {
       const string mesaj = "Merhaba";
       cout << mesaj << endl;
       {
           const string mesaj = "Erdem";
           cout << mesaj << endl;
       }
       ;
       ;
       ;
   }
   return 0;
}

Bu şekilde bir kullanımın geçerli olması dikkatimi çekti ;-)

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

February 03, 2016

Sadece C++ değil, tüm C kökenli dillerde bu durum mevcut. Noktalı virgüller, alışılagelmiş kullanımlarının haricinde tekil olarak kullanıldıklarında Derleyici tarafında bir anlam teşkil etmiyorlar. Ardı ardına kullanımlarda kullanılan ilk noktalı virgül ifadeyi sonlandırırken, diğerleri anlamsız kalıyor. Bu durumda da Derleyici herhangi bir tepki vermeyerek es geçiyor.

{
 foo();;;; // İlk noktalı virgül'den sonrakiler anlamsızdır, es geçilir.
}

if(true) {
 ; // Tekil kullanımlarda da keza anlamsızdır ve es geçilir.
}

Birden fazla kullanımların anlam teşkil edeceği istisna durumlarda var elbette.

for(;;) {}

gibi..

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

February 03, 2016

Noktalı virgülün boş ifade anlamına gelmesi hata kaynağı olduğundan ve Walter bu tür basit hataları önlemeye önem verdiğinden bunu D'de yasaklamıştır. Örneğin, aşağıdaki C++ kodundaki fazladan ; büyük olasılıkla hatadır. (Program tek 5 yazar.)

// C++ kodu
#include <iostream>

int main() {
   int i = 0;
   for ( ; i != 5; ++i);
       std::cout << i << '\n';
}

D'de bu derleme hatasıdır:

import std.stdio;

int main() {
   int i = 0;
   for ( ; i != 5; ++i);    // Error: use '{ }' for an empty statement, not a ';'
       writeln(i);
}

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]