我拥有的小代码可以很好地编译,但是当我运行IntVector.cpp时,我得到了成千上万的警告,如下所示:

 IntVector:3:1533: warning: null character ignored [-Wnull-character]
  ...<U+0000><U+0000><U+0000><U+0000><U+0000><U+0000><U+0000><U+0000><U+0000>
 IntVector:8:3: warning: null character ignored [-Wnull-character]
<U+0008><U+0000><U+0000><E9><U+0000><U+0000><U+0000><U+0000>H<8D>E<D0>H...
 ?IntVector:9:2415: warning: null character ignored [-Wnull-character]
  ...<U+0000><U+0000><9E><U+0000><U+0000><U+0000>|<U+0003><U+0000><U+0000>...

等等。这是我第一次尝试运行C++程序,因此我想问题可能出在我的设置中。我在Mac上,使用Emacs进行编码和编译,并通过终端运行它。

IntVector.cpp
#include <iostream>
#include "IntVector.h"
#include <cmath>
using namespace std;


  int* array = new int[0];
  int num_elements;
  int array_size;
  int expansion_factor;

void IntVector::expandArray(){

  }
void IntVector::add(int val){

    cout << "Hello";
  }
void IntVector::remove(int index){
  }
int IntVector::get(int index) const{
    return index;
  }
void IntVector::removeLast(){
  }
void IntVector::set(int index, int val){
  }

std::string IntVector::toString()const {
    return "";
  }

IntVector::IntVector(int initial_size){

  }

IntVector:: ~IntVector(){}


int main(){

  IntVector v(5);
  v.add(5);

}

IntVector.h
#ifndef INTVECTOR_H_
#define INTVECTOR_H_

using std::cout;
class IntVector {
private:
  int* array;
  int num_elements;
  int array_size;
  int expansion_factor;
  void expandArray();
 public:
  void add(int val);
  void remove(int index);
  int get(int index) const;
  void removeLast();
  void set(int index, int val);
  std::string toString() const;
  IntVector(int initial_size);
  ~IntVector();


};
#endif

最佳答案

此警告意味着您的源代码包含空字符。这几乎总是错误的。

造成这种情况的一个可能原因是您正在使用编辑器以宽字符编码保存文件,但是编译器期望输入具有窄编码。

该警告的另一个典型原因是试图包含或编译二进制文件。



看来您正在尝试编译文件IntVector而不是文件IntVector.cpp。大概IntVector是一个二进制文件。

10-07 20:29