小编yul*_*ian的帖子

C中的函数名是什么类型的?

我总是理解在C中,func并且&func是等价的.我假设它们都应该是类型指针,在我的Win64系统上是8个字节.但是,我刚试过这个:

#include <stdio.h>

int func(int x, int y)
{
    printf("hello\n");
}

int main()
{
    printf("%d, %d\n", sizeof(&func), sizeof(func));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

而期望获得输出8, 8却很惊讶8, 1.

为什么是这样?到底 什么类型func?它似乎是类型char或某种等价物.
这里发生了什么?

gcc -std=c99如果它有所作为,我编译了这个.

c function

33
推荐指数
3
解决办法
1866
查看次数

在C函数中声明extern变量?

我在C文件中定义了一个变量:int x我知道extern int x如果我想在其他文件中使用它,我应该用它来在其他文件中声明它.

我的问题是:我应该在其他文件中将其声明在哪里?

  1. 在所有功能之外,

    // in file a.c:
    int x;
    
    // in file b.c:
    extern int x;
    void foo() { printf("%d\n", x); }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在将使用它的功能内?

    // in file b.c:
    void foo() {
       extern int x;
       printf("%d\n", x);
    }
    
    Run Code Online (Sandbox Code Playgroud)

我的怀疑是:

  • 哪一个是正确的?或者
  • 如果两者都正确,哪个是首选?

c declaration extern variable-declaration

16
推荐指数
3
解决办法
8196
查看次数

linux内核子系统dm-crypt和ecryptfs有什么区别?

我试图在linux中读取ecryptfs的源代码.任何人都可以帮我解释一下linux内核子系统dm-crypt和ecryptfs的区别.有没有介绍ecryptfs来源的参考书.谢谢你的帮助.

c linux-kernel ecryptfs

12
推荐指数
1
解决办法
7377
查看次数

如何在Linux中安装curses.h头文件(或包含它的包)?

我想在Linux平台的C程序中使用某些操作(如清除屏幕等),我被告知可以完成包括curses.h header-file 在内的操作.但这似乎与gcc包一起不可用.

请告诉我如何安装它?

c curses

10
推荐指数
3
解决办法
5万
查看次数

错误C2371:'functionname'重定义:不同的基本类型

我有个问题.我使用Visual Studio 2013并获得以下错误:

Error C2371: 'getgrundflaeche' redefinition: different basic types.
Run Code Online (Sandbox Code Playgroud)

我不知道为什么我得到这个错误.当我尝试调用该函数时,我得到与VS12相同的错误getgrundflaeche().

这是代码:

#include <stdio.h>
#define PI 3.14159265359

int main(void){
    double h = 0, d = 0, r = 0, G = 0, V = 0, M = 0, O = 0;

    printf("Geometrie Zylinder:\nBitte geben sie den Durchmesser d ein (cm): ");
    scanf_s("%lf", &d);
    printf("Bitte geben sie die Höhe h ein (cm): ");
    scanf_s("%lf", &h);
    r = d / 2;

    G = getgrundflaeche(r);
    /*V = get_volumen(r, h);
    M = …
Run Code Online (Sandbox Code Playgroud)

c redefinition function-prototypes

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

如何在C中使用扩展ASCII表的符号?

我已经尝试打印扩展ASCII字符:

http://www.theasciicode.com.ar/

但所有这些符号都在白色背景上打印为问题字符?.

我使用以下周期来打印这些符号:

for (i = 0; i <= 30; i++)
    printf("%c", 201); 
Run Code Online (Sandbox Code Playgroud)

问题:有没有办法打印这些扩展ASCII字符?或者也许这些角色有特殊的图书馆?


OS Linux Ubuntu 13.04,Code :: Blocks 12.11 IDE.

c ascii character extended-ascii

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

错误:返回类型是不完整的类型

我不明白这是什么意思:

error: return type is an incomplete type"
Run Code Online (Sandbox Code Playgroud)

我只想返回结构。我已经分离了两个音频通道,我想使用 only 函数使用结构返回它们。

主文件

#include "functions.h"
...
struct LandR sepChannels_8( unsigned char *, unsigned long, unsigned char *, unsigned char *);
...
int main()
{
    ...

    sepChannels_8( ptrSamples_8, n, ptrSamples_8_L, ptrSamples_8_R );

    ...
}
Run Code Online (Sandbox Code Playgroud)

函数.h

...
struct LandR sepChannels_8( unsigned char *smp, unsigned long N, unsigned char *L, unsigned char *R )
{
    struct LandR
{
    unsigned char *L;
    unsigned char *R;
};
struct LandR LRChannels;

int i;

if ( …
Run Code Online (Sandbox Code Playgroud)

c struct return-type

5
推荐指数
1
解决办法
2万
查看次数

如何从C中的文件中读取一行

我想逐行读取文件中的行,但它对我不起作用.

这是我试图做的:

FILE *file;
char *line = NULL;
int len = 0;
char read;
file=fopen(argv[1], "r");

if (file == NULL)
    return 1;

while ((read = getline(&line, len, file)) != -1) {
    printf("Retrieved line of length %s :\n", &read);
    printf("%s", line);
}

if (line)
    free(line);

return 0;
Run Code Online (Sandbox Code Playgroud)

有什么建议为什么不起作用?

c file getline

5
推荐指数
1
解决办法
4万
查看次数

动态分配2维数组

我试图通过动态分配来构建二维数组.我的问题是,它的第一个维度可能需要100个值,那么第二个维度会根据我的问题采用可变数量的值吗?如果有可能那么我将如何访问它?我怎么知道第二维的边界?

c multidimensional-array dynamic-arrays dynamic-allocation

5
推荐指数
2
解决办法
2万
查看次数

MCGA BIOS文本模式下的16种背景颜色(AL = 03h)

MCGA支持4位颜色深度,即16种颜色.但是当我尝试打印所有这些颜色时,我只得到它们中的前8个,其余8个简单地复制它们,如下图所示.难道我在这里做错了,或者全是因为DOSBox?

试图获得所有16种颜色

代码(MASM,在DOSBox 0.74下):

TITLE   PROGRAM193
;----------------------------------------------------------
        .MODEL      SMALL
        .STACK      64
        .DATA           
;----------------------------------------------------------
        .CODE
MAIN    PROC    FAR
    MOV     AX, @DATA
    MOV     DS, AX

    MOV     AX, 0600h    ;AH = 06h (scroll up window)
    ; black (0)
    MOV     BH, 0Fh      ;0 (black) background, F (white) text
    MOV     CX, 0000h    ;upper line, left column
    MOV     DX, 004Fh    ;finishing line, right column
    INT     10h

    ; blue (1)
    MOV     BH, 1Fh
    MOV     CX, 0100h
    MOV     DX, 014Fh
    INT     10h

    ; green (2)
    MOV     BH, 2Fh
    MOV …
Run Code Online (Sandbox Code Playgroud)

assembly masm bios text-coloring dosbox

5
推荐指数
1
解决办法
4751
查看次数