Ellipsis (section 6.7.5.3, paragraph 9), Struct and union (section 6.7.2.1, paragraph 1), Function pointers (section 6.7.5.3, paragraph 8) – Altera Nios II C2H Compiler User Manual

Page 129

Advertising
background image

Altera Corporation

9.1

7–5

November 2009

Nios II C2H Compiler User Guide

ANSI C Compliance and Restrictions

For example, the following code shows two definitions of

my_func()

with compatible arguments, which is not supported:

int my_func(int (*)(), double (*)[3]);

int my_func(int (*)(char *), double (*)[]);

These two declarations can be combined into a single composite function
prototype that is compatible with the previous declarations:

int my_func(int (*)(char *), double (*)[3]);

Ellipsis (Section 6.7.5.3, Paragraph 9)
The ellipsis function argument is not supported.

The following function includes an incompletely specified parameter list,
which is not supported:

void foo(int a, short b,...);

The previous example can be replaced with a function declaration that
completely specifies the parameter list:

void foo(int a, short b, char *a);

Struct and Union (Section 6.7.2.1, Paragraph 1)
The C2H Compiler does not support passing struct or union arguments
to a function by value. There are two ways to include structs or union
types in the C source:

Pass a pointer to a struct or union as an argument to the function.

Define the struct or union globally outside the accelerated function.

The following code, which passes a struct

MyStruct

as an argument, is

not supported:

void doDMA(struct s MyStruct);

The previous example can be replaced with code that defines the struct

s

outside of the function call:

struct s MyStruct;

void doDMA();

Function Pointers (Section 6.7.5.3, Paragraph 8)
Function pointers are supported if used to point to functions that exist
inside the hardware accelerator. The C2H Compiler does not support
function pointers used as input or output arguments to an accelerator.

Advertising