对于time_t,C ++ Builder错误“预期类型名称”

时间:2012-10-20 18:58:40

标签: c++ api c++builder c++builder-2010

我有一行源代码:

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;
};

1 个答案:

答案 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