0

ソースコードの行があります:

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

1 に答える 1

3

ヘッダーのどこに<time.h>(あるべきか<ctime>) 含まれていますか?"api/dasapi.h"

実際、QuoteDefs.hヘッダーは、そのインクルードが存在しない限り使用できないため、おそらくまたはそれ自体の#includeいずれかにする必要があります。私がフォーマットしたコード スニペットの 11 行目が、コードのフォーマットの 9 行目にある可能性があることがわかりますが、ヘッダー保護ガードまたは必要な.<time.h><ctime>time_t#include

一般的なヒント:

  • ヘッダーは自己完結型で冪等でなければなりません。

自己完結型とは、次のように記述できる必要があることを意味します。

#include "header.h"

ファイルの先頭に配置すると、コードはきれいにコンパイルされるはずです。

べき等とは、ヘッダーが 2 回含まれても問題にならないことを意味します。通常、これは直接行われません。むしろ、ソースがヘッダーを直接インクルードし、他のヘッダーも間接的にヘッダーをインクルードします (または、他の 2 つのヘッダーが間接的にインクルードします)。<stdio.h>or<iostream>を 1 回しか含めることができなかったら、どんなに迷惑なことか考えてみてください。

次のように記述して、冪等性をテストできます。

#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
于 2012-10-20T19:43:56.640 に答える