前提・実現したいこと
単体のファイルはデバッグを実行できるのですが、
複数ファイルでできた.hを使ったプログラムでmainが入ったファイルをデバッグしたいときに以下のようなエラーがでてうまくいきません。
正直デバッグの理屈をよく知っているわけではないのですが"type": "cppdbg",がc++専用でcでは使えないのでは?
と思い、"type": "gdb",に変更したところ別のエラーが出ました。
複数ファイルで.hを使ったプログラムでmainが入ったファイルをデバッグするやり方を教えてください。よろしくお願いします。
発生している問題・エラーメッセージ
該当のソースコード
配列を行列っぽく表示するコード
#include <stdio.h> void put_hyo(int gyo,int retu,int* hyo){ int i=0; int j=0; printf("{\n"); for ( i = 0; i < gyo-1; i++) { printf(" { %2d",hyo[i*retu+0]); for ( j = 1; j < retu; j++) { printf(", %2d",hyo[i*retu+j]); } printf(" },\n"); } printf(" { %2d",hyo[(gyo-1)*retu+0]); for ( j = 1; j < retu; j++) { printf(", %2d",hyo[(gyo-1)*retu+j]); } printf(" }\n}\n"); }
ヘッダファイル
void put_hyo(int gyo,int retu,int* hyo);
mainが入ったコード
#include "hoge.h" int main(){ int h[5][2]={ {0,1}, {0,1}, {2,1}, {3,1}, {4,5}, }; put_hyo(5,2,(int*)h); return 0; }
launch.json
{ // IntelliSense を使用して利用可能な属性を学べます。 // 既存の属性の説明をホバーして表示します。 // 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "gcc.exe - アクティブ ファイルのビルドとデバッグ", "type": "cppdbg", //"type": "gdb", "request": "launch", "program": "${fileDirname}\${fileBasenameNoExtension}.exe", "args": [], "stopAtEntry": false, "cwd": "${fileDirname}", "environment": [], "externalConsole": false, "MIMode": "gdb", "miDebuggerPath": "C:\Strawberry\c\bin\gdb.exe", "setupCommands": [ { "description": "gdb の再フォーマットを有効にする", "text": "-enable-pretty-printing", "ignoreFailures": true } ], "preLaunchTask": "C/C++: gcc.exe アクティブなファイルのビルド" } ] }
tasks.json
{ "tasks": [ { "type": "cppbuild", "label": "C/C++: gcc.exe アクティブなファイルのビルド", "command": "C:\Strawberry\c\bin\gcc.exe", "args": [ "-fdiagnostics-color=always", "-g", "${file}", "-o", "${fileDirname}\${fileBasenameNoExtension}.exe" ], "options": { "cwd": "${fileDirname}" }, "problemMatcher": [ "$gcc" ], "group": { "kind": "build", "isDefault": true }, "detail": "デバッガーによって生成されたタスク。" } ], "version": "2.0.0" }
### 試したこと
Windows Power Shellによる(VScodeの機能を介さない)コンパイル
> gcc hoge_main.c hoge03.c -c > gcc hoge_main.o hoge03.o -o hogehoge > .\hogehoge { { 0, 1 }, { 0, 1 }, { 2, 1 }, { 3, 1 }, { 4, 5 } }
VScodeでRunしたときに出てくるエラーメッセージ
(.text+0x65): undefined reference to `put_hyo' collect2.exe: error: ld returned 1 exit status [Done] exited with code=1 in 1.435 seconds