2. Embedded SQL for C : C Variables and Data Types : Variable and Type Declarations : Variable Declarations Syntax
 
Share this page                  
Variable Declarations Syntax
The syntax of a variable declaration is:
[storage_class] [class_modifier] type_specification
              declarator {, declarator};
where each declarator is:
variable_name [= initial_value]
Syntax Notes:
Storage_class is optional but, if specified, can be any of the following:
auto
extern
register
static
varchar
VMS: The following storage classes are VMS only:
globaldef
globalref
The storage class provides no data type information to the preprocessor. The varchar storage class is described in more detail later.
Class_modifier is optional, and can be one of the following:
const
volatile
The class modifier provides no information to the preprocessor, and is merely passed through to the C compiler. Use of const and volatile keywords in ESQL/C data declarations is supported to the extent specified in the ANSI/ISO SQL-92 standard for embedded SQL C. That does not include all the possible uses of const and volatile that are accepted by the C compiler.
Begin a variable or type name with an alphabetic character, but follow it with alphanumeric characters or underscores.
Although register variables are supported, be careful when using them in embedded SQL statements. In input/output statements, such as the insert and select statements, you can pass a variable by reference with the ampersand operator (&). Some compilers do not allow you to use register variables this way.
The type_specification must be an embedded SQL/C type, a type built up with a typedef declaration (and known to the preprocessor), or a structure or union specification. Typedef declarations and structures are discussed in detail later.
Precede the variable_name by an asterisk (*), to denote a pointer variable, or follow it with a bracketed expression ([expr]), to denote an array variable. Pointers and arrays are discussed in more detail later.
Begin the variable_name, which must be a legal C identifier name, with an underscore or alphabetic character.
Variable names are case sensitive; that is, a variable named empid is different from one named Empid.
Do not use a previously defined typedef name for a variable name. This also applies to any variable name that is the name of a field in a structure declaration.
The preprocessor does not parse initial_value. Consequently, the preprocessor accepts any initial value, even if it can later cause a C compiler error. For example, the preprocessor accepts both of the following initializations, even though only the first is a legal C statement:
char *msg = "Try again";
int rowcount = {0, 123};
Example: Variable declarations usage
extern int first_employee;
 auto long update_mode = 1;
 static char *names[3] = {"neil","mark","barbara"};
static char *names[3] = {"john","bob","tom"};
char **nameptr = names;
 short name_counter;
 float last_salary = 0.0, cur_salary = 0.0;
 double stat_matrix[STAT_ROWS][STAT_COLS];
 const char xyz[] = "xyz";