I (ben başka bir yerde _MOVE_H
tanımlayan değilim yemin) #ifndef
ve #endif
arasındaki tüm kod basitçe derleyici tarafından göz ardı edilir, bir C bu, "_MOVE_H" ile ilgili çok özel nedir?
#ifndef _MOVE_H
#define _MOVE_H
class Move {
int x, y;
public:
Move(int initX = 0, int initY = 0) : x(initX), y(initY) {}
int getX() { return x; }
void setX(int newX) { x = newX; }
int getY() { return y; }
void setY(int newY) { y = newY; }
};
#endif
gibi Ve benim hayretle dosyasını ++ var ve ben var Eksik tanımlar ile ilgili her türlü hata. Ben yanlış bir şey yaptığını düşünüyordum, ama başka bir anahtar kullanmaya çalıştığınızda (_MOVE_Ha
gibi, her şey normale döndü. _MOVE_H
C özel bir anlamı var mı ++?
Ben Ubuntu 10.04, GCC 4.4.3 koşuyorum , eğer bu konularda
sayesinde
, içerme koruması için kullanmakta olduğunuz kitaplık dosyalarından biri olabilir miyim? Bunu kontrol ettin mi? btw, ben genellikle bu tür bir sorunu önlemek için proje adı ile öneki. – Naveen
'# define' yerine' #pragma once 'işlevini kullanmanın bir başka nedeni de korumaları içerir ... – Inverse
@Inverse, '#pragma once' derleyici uzantısıdır ve tüm derleyiciler tarafından desteklenmez. Muhafızları dahil etmek, birden fazla dahil edilmesini önleyen tek güvenli derleyici bağımsız aracıdır. –