16 Mayıs 2016 Pazartesi

One Definition Rule

Açıklaması şöyle. Aynı isim alanı içinde aynı isime sahip iki struct tanımı olamaz.
if one .cpp file defines struct S { int x; }; and the other .cpp file defines struct S { int y; };, the behavior of the program that links them together is undefined.
file1.cpp dosyasında şu struct olsun
struct S2 { int a; char b; };
file1.cpp dosyasında şu struct olsun
struct S2 { int a; char bb; };
int main(){ return 0;}
Kodu derleyelim
g++ -std=c++11 file1.cpp file2.cpp
Kodun davranışı tanımsızdır (undefined). Ayrıca derleyici uyarı vermek zorunda değildir.



Hiç yorum yok:

Yorum Gönder