【问题标题】:C++ Builder Error "Type name expected" for time_ttime_t 的 C++ Builder 错误“预期类型名称”
【发布时间】:2012-10-20 18:58:39
【问题描述】:

我有一行源码:

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

【问题讨论】:

  • 您还应该显示带有 time_t 声明的行正上方的行。错误并不是说它不能识别time_t。
  • 请在问题中编辑代码(您可以编辑自己的问题)。这次我已经为你做了——以后请你自己做。
  • <time.h>(应该是<ctime>?)在哪里包含"api/dasapi.h" 标头?实际上, QuoteDefs.h 标头可能应该是 #include 或者 <time.h><ctime> 本身,因为除非包含存在,否则不能使用它。我可以看到代码 sn-p 中第 11 行的 time_t 可能位于代码格式的第 9 行,但没有空间用于标题保护防护或必要的 #include。跨度>
  • 在您单击以接受答案的向上/向下箭头旁边有一个复选标记可单击他们的答案。
  • 我将包含添加到 QuatesDefs,现在它可以编译了。谢谢。

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


【解决方案1】:

<time.h>(应该是<ctime>)在哪里包含"api/dasapi.h" 标头?

确实,QuoteDefs.h 标头可能应该是 #include <time.h><ctime> 本身,因为除非包含存在,否则无法使用它。我可以看到我格式化的代码 sn-p 中第 11 行的time_t 可能位于代码格式的第 9 行,但是没有空间用于标题保护防护或必要的 @987654329 @。

一般提示:

  • 标头应该是自包含且幂等的。

自成体系意味着你应该会写:

#include "header.h"

在文件的顶部,代码应该编译干净。

幂等意味着标题是否包含两次都无关紧要。通常,这不会直接完成。而是源将直接包含标题,而其他一些标题也将间接包含标题(或其他两个标题将间接包含它)。想想如果你只能包含一次<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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-21
    • 1970-01-01
    • 2020-03-25
    • 2022-10-31
    • 1970-01-01
    • 2013-07-11
    • 1970-01-01
    相关资源
    最近更新 更多