※ ChatGPTを利用し、要約された質問です(原文:typedef定義型を使った関数について)
typedef定義型を使った関数について
このQ&Aのポイント
Visual C++ 2008 Express Editionを使ってC言語のソースコードを記述しています。ビルドを行った際にエラーが発生し、解決方法がわからず質問させていただいた次第です。
上記のソースコードでビルドを行ったところ、構文エラーが発生しています。特に、識別子 'GetInfo' のエラーが発生しており、どのように修正すれば良いかわかりません。
上記のソースコードでは、typedef定義型を使って関数を宣言しています。Infoという構造体型を定義し、その型を返り値とする関数GetInfoを宣言しています。
はじめて質問させていただきます。
Visual C++ 2008 Express Editionを使ってC言語のソースコードを記述しています。
(OSはWindows XPを使用しています。)
ビルドを行った際に以下のエラーが発生していて、先に進めません。
色々と調べてみたのですが、解決方法がわからず質問させていただいた次第です。
解決方法についてご存知の方がいらっしゃいましたら、回答いただけると嬉しいです。
■エラー内容
------ ビルド開始: プロジェクト: Sample, 構成: Debug Win32 ------
コンパイルしています...
Sample.c
d:\sample\sample\Sample.c(4) : error C2061: 構文エラー : 識別子 'GetInfo'
d:\sample\sample\Sample.c(4) : error C2059: 構文エラー : ';'
d:\sample\sample\Sample.c(4) : error C2059: 構文エラー : ')'
ビルドログは "file://d:\Sample\Sample\Debug\BuildLog.htm" に保存されました。
Sample - エラー 3、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========
■Sample.c
#include "stdafx.h"
Info GetInfo(){
return 0;
}
int main(){
return 0;
}
■stdafx.h
#pragma once
#include "def.h"
#include <stdio.h>
#include <tchar.h>
Info GetInfo();
■def.h
typedef struct Info{
int a;
int b;
int c;
} Info;
お礼
ご回答ありがとうございます。 記載いただいておりましたように、「空のプロジェクト」から作成して同様のソースを記述すると、「error C2440:'return' : 'int' から 'Info' に変換できません」となりました。 Sample.cのInfo GetInfo()部分を以下のように修正しましたところ、正常にビルドできるようになりました。 ------ Info GetInfo(){ struct Info taginfo = {1,2,3}; return taginfo; } ------ 「空のプロジェクト」として作成する以外は、プロパティの設定等をまったく同じにしたのですが、正常にビルドできています。 ちなみに、知識不足で大変申し訳ないのですが、「空のプロジェクト」として作成する場合としない場合でビルド結果が変わるのはなぜなのでしょうか? #参考になりそうなURLなどがありましたら、URLのご提示でも構いませんので、ご教示いただけると幸いです。