我的程序遇到了一個奇怪的錯誤:頭文件減慢了程序的速度。我使用空代碼測試頭文件(即:main() {}
),並且需要40秒才能運行該空代碼。頭文件減慢程序的速度
頭文件的.h
#include "stdafx.h"
#include <string>
#ifndef LZ_H
#define LZ_H
extern int e,i;
extern std::string dic[1000000];
void init();
#endif
功能文件的.cpp
#include "lz.h"
#include "stdafx.h"
#include <string>
std::string dic[1000000];
int i=0;
int e=0;
std::string cstr(char c)
{
return std::string(1,c);
}
void init()
{
for (e=0;e<=255;e++) dic[e]=cstr(e);
e=e-1;
}
Test主文件的.cpp
#include "lz.h"
void main() {}
結果:40歲。 我從來沒有遇到過這樣奇怪的錯誤。
旁註:用線年底前所有這些空間是什麼?另外,很長的執行時間可能與一百萬個'std :: string'試圖構造? – Shahbaz
全局默認初始化。所以這個數組會被填充空字符串,無論您是否使用它。 (免責聲明:我可能對特定類型的初始化錯誤,但同樣的原則也適用)。 – BoBTFish
你不應該在頭文件中包含''stdafx.h''。相反,它應該是第一個包含在源文件中的文件。 –