ソースファイルで使用できるように、ヘッダーファイルで構造を宣言したいと思います。私は何が間違っているのですか?どの関数からでも構造体にアクセスできるようにしたい。
info.h
#ifndef INFO_H
#define INFO_H
typedef struct info
{
int mem_size;
int start_loc;
int used_space;
int free_space;
} INFO;
#endif
test.c
#include <stdio.h>
#include <stdlib.h>
#include <info.h>
#define F_first 1
#define F_last 2
#define F_data_int 3
#define F_data_char 4
#define F_data_float 5
#define F_print 6
void * f(int code);
int main() {
INFO in;
in.mem_size = 8;
f(F_last, 0,0);
return(0);
}
void * f(int code) {
printf("%d", in.mem_size);
}
交換:
#include <info.h>
と、
#include "info.h"
<>
コンパイラは、事前に指定されたヘッダーフォルダ内のヘッダーファイルのみを検索します。これは、標準ライブラリのヘッダーファイルに使用されます。
と""
コンパイラは、最初に.cファイルが置かれているローカルディレクトリのヘッダーファイルを検索します。これは、ユーザー定義のヘッダーファイルに使用されます。
はい...カスタムベースのヘッダーには、#include "info.h"
ではなく#include <info.h">
を使用する必要があります。通常、これらは、Unix/Linuxプラットフォームの/usr/include
ディレクトリに通常配置されているシステムブランチの一部ではありません。