2012-10-20 58 views
0

我有一個行的源代碼:C++ Builder的錯誤 「類型名稱」 爲time_t的

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

你也應該表明是正確與time_t的報關行的各行。錯誤並不表示它不識別time_t。 – Scooter

+0

請編輯代碼到問題中(您可以編輯自己的問題)。我這次爲你做了 - 請你自己做。 –

+1

''(應該是''?)包含w.r.''api/dasapi.h「'頭文件?的確,QuoteDefs.h頭文件應該可能包含'#include'或者''或者''本身,因爲除非包含它,否則它不能被使用。我可以看到代碼格式化代碼片段中第11行的'time_t'可能在第9行,但是沒有頭保護或必需的'#include'的空間。 –

回答

3

<time.h>(應該說是<ctime>)包括w.r.t的"api/dasapi.h"頭?

事實上,QuoteDefs.h標題應該可能#include或者<time.h><ctime>本身,因爲它不能使用,除非包含它是存在的。我可以看到格式化代碼段中第11行的time_t如何在格式化代碼的第9行,但沒有頭保護或必要的#include的空間。

一般提示:

  • 頭應該是自包含的,冪等。

自給意味着你應該能夠編寫:

#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 "[email protected]" 
do 
    case "$file" in 
    (-*) options="$options $file";; 
    (*)  echo "$file:" 
      ${CC:-gcc} $options -DHEADER="\"$file\"" -c $tmp.c 
      ;; 
    esac 
done 

rm -f $tmp.? 
trap 0 
相關問題