Tag: 原型

C原型范围

我了解到了 在函数原型(不是函数定义的一部分)中的参数声明列表中声明标识符的类型说明符,标识符具有函数原型作用域,它终止于函数声明符的末尾。 请参阅下面提到的C程序。 void fn (struct st {int a;} a, struct st b) ; struct st obj ; 编译器会立即发出错误,因为’obj’大小未知(或)struct st不是’type’。 那就对了! 结构’struct st’的声明在原型声明中结束。 我相信原型有这个限制因为我们也可以在原型声明中使用一些变量名。 这些名称可能与同一范围内的变量(与函数原型的变量)冲突。 如下。 void fn (int a) ; int a ; 因此,为了允许上述声明,原型的范围是有限的。 (如果我错了,请纠正我) 但是,对于原型声明,参数变量名称没有用。 那么,为什么它是“狭隘的范围”? 拥有参数变量名称有什么意义? 什么是语言设计者(或)规范对此的想法?

什么原因导致编译器警告未使用的函数?

简单设置:有n个函数的原型和函数的实现。 有一大堆函数指针。 每个函数都列在此数组中。 在使用gcc进行编译时,有些仍会导致-Wunused-function。 码: void foo1(void); void foo2(void); void bar1(void); void bar2(void); /* and their implementations */ void (*functions[])(void) = { foo1, foo2, bar1, bar2 }; 这就是设置的样子(仅举例)! 其中一个foo / bar函数现在在使用gcc编译时会导致-Wunused-function警告。 其他人没有。 为什么?

什么是C程序中的“原型”?

这本书我用来学习C解释了一些叫做“原型”的东西,我无法正确理解。 在本书中,以下示例代码解释了这些“原型”。 这是什么意思? 什么是“原型”? //* two_func.c — a program using two functions in one file */ #include void butler(void); int main(void) { printf(“I will summon the butler function.\n”); butler(); printf(“Yes! bring me some tea and writable DVD’s.\n”); getchar(); return 0; } void butler(void) /*start of function definition*/ { printf(“You rang,sir.\n”); } 请简单解释一下。

函数原型声明

我正在练习c中的function并且遇到了程序…. #include int main() { float a=15.5; char ch =’C’; printit(a,ch); return 0; } printit(a,ch) { printf(“%f\n%c”,a,ch); } 我想知道为什么上面的程序编译而不是给出我迄今为止所理解的错误是…… 必须使用特定原型声明c中的函数(但此程序不包含原型) 为什么程序给char变量输出’x’? c中的函数是否能够接受该值而不被声明参数中的类型,如函数声明中所做的那样?

为什么函数原型在不同的function块中?

我试图了解C,通过K&R。 我无法理解本书中的两个函数的代码: void qsort(int v[], int left, int right){ int i, last; void swap(int v[], int i, int j); if (left >= right) return; swap(v, left, (left+right)/2); last = left; for ( i = left+1; i<=right; i++) if (v[i]<v[left]) swap(v,++last, i); swap(v,left,last); qsort(v,left,last-1); qsort(v,last+1,right); } void swap(int v[], int i, int j){ int temp; temp […]

错误:以前没有函数原型。 为什么我收到此错误?

// screen.h #ifndef screen_h #define screen_h #define MAC 1 #define WIN 2 #define LNX 3 #ifdef PLATFORM # undef PLATFORM #endif #define PLATFORM MAC void screen_init(); #endif // screen.c #include #include #include “screen.h” #if PLATFORM == MAC #include void screen_init(){ erase(); } #endif 我不明白为什么它没有在screen.h中看到我的原型 任何建议/提示表示赞赏!