相关疑难解决方法(0)

在作用域的开头声明 C89 局部变量?

我试图在 ANSI C 中执行此操作:

include <stdio.h>
int main()
{
    printf("%d", 22);
    int j = 0;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这在 Microsoft Visual C++ 2010(在 ANSI C 项目中)中不起作用。你会得到一个错误:

error C2143: syntax error : missing ';' before 'type'
Run Code Online (Sandbox Code Playgroud)

这确实有效:

include <stdio.h>
int main()
{
    int j = 0;
    printf("%d", 22);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

现在我在很多地方读到,必须在变量所在的代码块的开头声明变量。这对于 ANSI C89 通常是这样吗?

我发现很多论坛上的人都给出了这个建议,但我没有看到它写在任何“官方”来源中,比如GNU C手册。

c variables declaration visual-studio-2010

4
推荐指数
2
解决办法
6720
查看次数

C90:如何在没有C99扩展的情况下在C中全局初始化此结构

我想知道用C90初始化这个结构的最好方法是什么,同时仍保持整洁.

在我的头文件中,将其命名为test.h,我定义了以下结构:

 struct s_test_cfg{
      char *a[3];
      char *b[3];
      char *c[3];
 }
Run Code Online (Sandbox Code Playgroud)

然后我将它声明为extern结构,以便我可以在.c文件中全局初始化它:

 extern struct s_test_cfg test_cfg;
Run Code Online (Sandbox Code Playgroud)

现在在我的.c文件中,我希望能够在全局范围内声明这样的东西(很明显我要编写的内容在C90中不受支持):

 struct s_test_cfg test_cfg =
 { .a = {"a", "b", "c"},\
   .b = {"d", "e", "f"},\
   .c = {"g", "h", "i"} };
Run Code Online (Sandbox Code Playgroud)

这显然使你对你想要做的事情非常整洁和透明.如何初始化我的C文件中的全局结构,该结构也像这种语法一样干净?谢谢.

c struct global declare c89

3
推荐指数
1
解决办法
7443
查看次数

标签 统计

c ×2

c89 ×1

declaration ×1

declare ×1

global ×1

struct ×1

variables ×1

visual-studio-2010 ×1