首页 > 解决方案 > 警告:在 C++ 中忽略空字符 [-Wnull-character]

问题描述

我编译的小代码很好,但是当我运行 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 进行编码和编译,并使用终端运行它。

整数向量.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);

}

整数向量.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  

标签: c++

解决方案


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

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

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

cpp IntVector

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


推荐阅读