【C++】变量声明

C++ 中的变量声明

变量声明向编译器保证变量以给定的类型和名称存在,这样编译器在不需要知道变量完整细节的情况下也能继续进一步的编译。变量声明只在编译时有它的意义,在程序连接时编译器需要实际的变量声明。

当您使用多个文件且只在其中一个文件中定义变量时(定义变量的文件在程序连接时是可用的),变量声明就显得非常有用。您可以使用 extern 关键字在任何地方声明一个变量。虽然您可以在 C++ 程序中多次声明一个变量,但变量只能在某个文件、函数或代码块中被定义一次。

实例

尝试下面的实例,其中,变量在头部就已经被声明,但它们是在主函数内被定义和初始化的:

#include <iostream>
using namespace std;

// 变量声明
extern int a, b;
extern int c;
extern float f;
  
int main ()
{
  // 变量定义
  int a, b;
  int c;
  float f;
 
  // 实际初始化
  a = 10;
  b = 20;
  c = a + b;
 
  cout << c << endl ;

  f = 70.0/3.0;
  cout << f << endl ;
 
  return 0;
}

当上面的代码被编译和执行时,它会产生下列结果:

30
23.3333

同样的,在函数声明时,提供一个函数名,而函数的实际定义则可以在任何地方进行。例如:

// 函数声明
int func();

int main()
{
    // 函数调用
    int i = func();
}

// 函数定义
int func()
{
    return 0;
}

pro*c变量声明的问题

05-22

文件内容rn#include "test.h"rnrnEXEC SQL BEGIN DECLARE SECTION;rntypedef int ID;rnEXEC SQL END DECLARE SECTION;rnint main(argc,argv)rnint argc ;rnchar**argv;rnrn rn EXEC SQL BEGIN DECLARE SECTION;rn ID LN_SERV_ID;rn EXEC SQL END DECLARE SECTION;rn EXEC SQL rn SELECT 1 rn INTO :LN_SERV_IDrn FROM dual;rn rn return 1; rnrnrn目前想把rnEXEC SQL BEGIN DECLARE SECTION;rntypedef int ID;rnEXEC SQL END DECLARE SECTION;rn移至test.h文件中rn但是移至后预编译提示如下rnrnPro*C/C++: Release 8.1.7.0.0 - Production on Mon May 22 14:54:03 2006rnrn(c) Copyright 2000 Oracle Corporation. All rights reserved.rnrnSystem default option values taken from: /data/oracle/oracle/product/8.1.7/precomp/admin/pcscfg.cfgrnrnSyntax error at line 9, column 2, file test.pc:rnError at line 9, column 2 in file test.pcrn ID LN_SERV_ID;rn.1rnPCC-S-02201, Encountered the symbol "ID" when expecting one of the following:rnrn auto, char, const, double, enum, extern, float, int, long,rn ulong_varchar, OCIBFileLocator OCIBlobLocator,rn OCIClobLocator, OCIDateTime, OCIExtProcContext, OCIInterval,rn OCIRowid, OCIDate, OCINumber, OCIRaw, OCIString, register,rn short, signed, sql_context, sql_cursor, static, struct,rn typedef, union, unsigned, utext, uvarchar, varchar, void,rn volatile, a typedef name, a precompiled header, exec oracle,rn exec oracle begin, exec, exec sql, exec sql begin,rn exec sql end, exec sql type, exec sql var, exec sql include,rnThe symbol "enum," was substituted for "ID" to continue.rnrnError at line 0, column 0 in file test.pcrnPCC-F-02102, Fatal error while doing C preprocessingrnrn--------------rn若何修改才能正确?rnrn同时想知道为什么在红帽 linux9必须有rnEXEC SQL BEGIN DECLARE SECTION;rn ID LN_SERV_ID;rn EXEC SQL END DECLARE SECTION;rn这样的声明。rn我在hpunix下就不需要这个的,有什么配置控制吗?rn 论坛

没有更多推荐了,返回首页