第二个cpp文件中的任何错误都无法识别

时间:2015-03-24 00:49:06

标签: c++

我有1个头文件和2个.cpp文件(我已经包含main.cpp)并且正在使用CodeBlocks。我的问题是编译器在构建它时没有看到第二个.cpp文件(graph_interface.cpp)中的错误。你有什么建议吗?我哪里错了?。

即使我在graph_implementation.cpp文件中做错了,我也得到了输出:

 Target is up to date.
 Nothing to be done (all items are up-to-date).

例如,我在main.cpp

中的代码
//main.cpp
#include "graph_interface.h"

int main(int argc,char *argv[])
   {
     return 0;
   }

graph_interface.h档案

  #ifndef GRAPH_INTERFACE_H_INCLUDED
  #define GRAPH_INTERFACE_H_INCLUDED

  typedef struct{int v;int w;} Edge;
  Edge EDGE(int,int);

  typedef struct graph *Graph;
  Graph GRAPHinit(int);
  void GRAPHinsertE(Graph,Edge);
  void GRAPHremoveE(Graph,Edge);
  int GRAPHedges(Edge[],Graph G);
  Graph GRAPHcopy(Graph);
  void GRAPHdestroy(Graph);
  #endif // GRAPH_INTERFACE_H_INCLUDED

和其他cpp文件graph_implementation.cpp

 #include "graph_interface.h"
 using namespace std;
 struct graph{
   int V;
   int E;
   int **adj;
 };
 Graph GRAPHinit(int V){
 Graph G=malloc(sizeof *G);
    G->V=V;
    G->E=0;
    G->adj=MATRIXint(V,V,0);
    return G;
    ;// not give anything
 }

1 个答案:

答案 0 :(得分:0)

如果你期待这一行:

;// not give anything

产生错误,你没有看到错误的原因是因为空语句在C ++中完全合法;此行不包含任何错误。

// complete, legal C++ program
int main() {
  ;
}

使用new / deletemalloc / free这种方式违背了现代C ++实践,因为它很难正确完成。现代实践更像是:

class Graph {
  int V;
  Matrix adj;
public:
  Graph(int V)
    : V(V), adj(V*V, 0)
  {}
}

int main() {
  Graph g; // automatically initialized and destroyed correctly

  // ...
}