我有一行源代码:
time_t l1_QuoteTime;
我收到以下错误:
[BCC32 Error] QuoteDefs.h(18): E2303 Type name expected
Full parser context
Unit1.cpp(7): #include api\dasapi.h
dasapi.h(13): #include api\QuoteDefs.h
QuoteDefs.h(9): class st_L1Quotes
我已加入<time.h>
。我在这里缺少什么?
代码:
class st_L1Quotes
{
public:
char secsym[10];
char PrimExch;
int mstatus;
double l1_BidPrice;
int l1_BidSize;
double l1_AskPrice;
int l1_AskSize;
time_t l1_QuoteTime;
double l1_lastPrice;
double l1_todayhigh;
double l1_todaylow;
double l1_todayclose;
int l1_volume;
double l1_yclose;
double l1_todayopen;
double l1_LastBidPrice;
// this is used for show up/down arrow for NASDAQ NMS stocks;
};
答案 0 :(得分:3)
在<time.h>
标题中,<ctime>
(应该是"api/dasapi.h"
)包含在哪里?
实际上,QuoteDefs.h
标头应该#include
<time.h>
或<ctime>
本身,因为除非包含该包含,否则无法使用它。我可以看到由我格式化的代码段中第11行的time_t
如何在您的代码格式中位于第9行,但是没有空间来保护标头或必要的{{ 1}}。
一般提示:
自足意味着您应该能够写下:
#include
位于文件的顶部,代码应该干净地编译。
幂等意味着如果标题包含两次并不重要。通常,这不会直接完成;相反,源会直接包含标题,而其他一些标题也会间接包含标题(或者其他两个标题会间接包含它)。如果您只能包含#include "header.h"
或<stdio.h>
一次,请考虑一下会有多么麻烦!
您可以通过写作来测试幂等性:
<iostream>
位于文件的顶部,代码应该干净地编译。
我甚至有一个名为#include "header.h"
#include "header.h"
的脚本来自动化测试:
chkhdr