C++生成器错误"Type name expected" time_t

C++ Builder Error "Type name expected" for time_t

本文关键字:expected time name Type 错误 C++      更新时间:2023-10-16

我有一系列源代码:

time_t l1_QuoteTime;

我正在收到以下错误:

[BCC32 Error] QuoteDefs.h(18): E2303 Type name expected
  Full parser context
    Unit1.cpp(7): #include apidasapi.h
    dasapi.h(13): #include apiQuoteDefs.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;
};

<time.h>(应该是 <ctime>)在哪里包括w.r.t "api/dasapi.h" header?

的确,QuoteDefs.h标头可能应#include <time.h><ctime>本身,因为除非存在,否则不能使用它。我可以看到我格式化的第11行中的time_t是如何在您的代码格式中的第9行中处于第9行的,但是标头保护罩或必要的#include没有空间。

一般提示:

  • 标题应具有独立和掌握。

独立的意味着您应该能够写:

#include "header.h"

在文件的顶部和代码应干净地编译。

diadempotent意味着是否包括两次标头无关紧要。通常,这不会直接完成;相反,源将直接包括标头,其他一些标头也将间接地包括标头(或其他两个标题将间接包含)。想想只有一次只能包括<stdio.h><iostream>

您可以通过写作:

来测试势力
#include "header.h"
#include "header.h"

在文件的顶部和代码应干净地编译。

我什至有一个称为chkhdr的脚本来自动进行测试:

#!/bin/ksh
#
# @(#)$Id: chkhdr.sh,v 1.3 2011/07/25 07:09:49 jleffler Exp $
#
# Check whether a header can be compiled standalone
tmp=chkhdr-$$
trap 'rm -f $tmp.?; exit 1' 0 1 2 3 13 15
cat >$tmp.c <<EOF
#include HEADER /* Check self-containment */
#include HEADER /* Check idempotency */
int main(void){return 0;}
EOF
options=
for file in "$@"
do
    case "$file" in
    (-*)    options="$options $file";;
    (*)     echo "$file:"
            ${CC:-gcc} $options -DHEADER=""$file"" -c $tmp.c
            ;;
    esac
done
rm -f $tmp.?
trap 0