編集:おっと!コンパイルコマンドを含めるつもりでした。「g++-g -o warwar.hwar.cpp」を使用しました
編集2:これは私がgccバージョン4.4.3(Ubuntu 4.4.3-4ubuntu5)を使用してコンパイルしているLinuxサーバーです。また、問題を再現しようとしても再現できなかったので、今何が原因なのかよくわかりません。
気まぐれで、私はc ++で戦争(カードゲーム)シミュレーターを作ることにしました。私はプログラムを開始し、すべての#includeを含むヘッダーファイルを作成し、ソースコードを別のファイルに入れました。誤ってヘッダーファイルとソースコードの両方に#includesが含まれていて、コンパイルしようとすると、次のようなエラーが発生し始めました。
war.cpp:3815:エラー:プログラムwar.cpp:3815:12の迷走'\ 20':警告:ヌル文字はwar.cpp:3815を無視しました:エラー:プログラムwar.cppの迷走' \ 21': 3815:エラー:プログラムwar.cpp:3815:18の迷走'\ 231':警告:ヌル文字はwar.cpp:3815を無視しました:エラー:プログラムwar.cpp:3815:20の迷走' \ 20':警告:ヌル文字はwar.cpp:3815を無視しました:エラー:プログラムwar.cpp:3815の迷い'\ 20':エラー:プログラムwar.cpp:3815の迷い'\ 212':エラー:迷い'\ 217 'プログラム内
このプログラムはこの時点で200文字未満であったため、コンパイラがこれらすべての文字をファイルに書き込む原因となっていることに注意してください。私はすぐに問題が何であるかを理解して修正しましたが、私の質問は、これはどのように起こったのかということです。コンパイラがプログラムに大量に書き込む原因は何ですか?私がコンパイラーをキャンセルするまでに(それはちょうど続けようとしていたように見えました)、ファイルはほんの数秒で数百バイトからほぼ13MBに成長しました。私は専門家ではありませんが、特に大学のCS部門のサーバーでsshを介してこのプログラムを実行していたため、この種のことはセキュリティに影響を与える可能性があるようです。
価値のあるものとして、コンパイルしたときに持っていたコードは次のとおりです。
war.cpp:
#include <iostream>
#include <cstdlib>
#include <vector>
using namespace std;
int main()
{
vector< pair<int, suit> > deck1;
vector< pair<int, suit> >::iterator it1;
}
war.h:
#ifndef WAR_H
#define WAR_H
#include <iostream>
#include <cstdlib>
#include <vector>
using namespace std;
enum suit { HEARTS, SPADES, CLUBS, DIAMONDS };
#endif