質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WSL(Windows Subsystem for Linux)

WSL (Windows Subsystem for Linux) は、Windows10のOS上でLinux向けのバイナリプログラムを実行可能にする機能です。また、WindowsOSのAPIを用いた仕組みを提供しており、Linux側からWindowsOSへのファイルアクセスもできます。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

5回答

3295閲覧

Linux ubuntu16.04でのプログラムのコンパイルエラーの解決方法を教えてください.

退会済みユーザー

退会済みユーザー

総合スコア0

WSL(Windows Subsystem for Linux)

WSL (Windows Subsystem for Linux) は、Windows10のOS上でLinux向けのバイナリプログラムを実行可能にする機能です。また、WindowsOSのAPIを用いた仕組みを提供しており、Linux側からWindowsOSへのファイルアクセスもできます。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2021/05/21 05:04

前提・実現したいこと

Linux ubuntu16.04で C++の”角度を3次多項式で算出しPID制御で動作するプログラム”を実行しようとしています.
元々,windowsXP上で作成されたものだったのですが,指定されたファイルが見つからず,デバックが開始されない状態になってしまいました.必要なファイルがなくなってしまい動かせないため,Linuxに変更して動作させようとしています.端末から直接コンパイルを行っているのですが,実装中に以下のエラーメッセージが発生しました。
エラーを解決し,プログラムを実行させたいです.

発生している問題・エラーメッセージ

①2014robotarm.cpp:5:21: fatal error: windows.h: そのようなファイルやディレクトリはありません #include <windows.h> ②2014robotarm.cpp:7:22: fatal error: mmsystem.h: そのようなファイルやディレクトリはありません #include <mmsystem.h> ③2014robotarm.cpp:10:19: fatal error: conio.h: そのようなファイルやディレクトリはありません #include <conio.h> ④2014robotarm.cpp:12:19: fatal error: I7sIo.h: そのようなファイルやディレクトリはありません #include "I7sIo.h" ⑤2014robotarm.cpp:13:24: fatal error: I7sPciBase.h: そのようなファイルやディレクトリはありません #include "I7sPciBase.h" ⑥2014robotarm.cpp:124:1: error: ‘WORD’ does not name a type WORD DA_Data[16]; ⑦2014robotarm.cpp:125:1: error: ‘DWORD’ does not name a type DWORD dwDat,CNT[16],Cnt[16]; ⑧2014robotarm.cpp:206:1: error: ‘IB7_PARAINFO’ does not name a type IB7_PARAINFO Ib7ParaInfo; ⑨2014robotarm.cpp:207:1: error: ‘IB7_PARAENC’ does not name a type IB7_PARAENC Ib7ParaEnc; ⑩2014robotarm.cpp:208:1: error: ‘IB7_PARADA’ does not name a type IB7_PARADA Ib7ParaDa; ⑪2014robotarm.cpp:209:1: error: ‘IB7_PARAAD’ does not name a type IB7_PARAAD Ib7ParaAd; ⑫2014robotarm.cpp:243:15: error: expected initializer before ‘LCSetUpTimer’ void CALLBACK LCSetUpTimer(UINT uTimerID, UINT uMsg, DWORD dwUser,DWORD dw1, DWORD dw2)

###該当のソースコード

#include <windows.h> #include <stdio.h> #include <mmsystem.h> #include <limits.h> #include <float.h> #include <conio.h> #include <math.h> #include "I7sIo.h" #include "I7sPciBase.h" #pragma comment(lib,"winmm.lib") #define PI 3.1416 FILE *Data; FILE *A_sen; FILE *R_sen; FILE *P_sen; FILE *Gain; FILE *T_Data; ///////変数宣言////// int i=0; int j,k; int fd; int ret; int bdno;//ボード番号 double time=0; double C=300;//カットオフ周波数 /* double x,y; double theta1; double theta2; double d1, d2; double i1,i2; /////////逆運動学パラメータ設定////// double subkine( double x,double y,double l1,double l2,double n1,double n2,double d1,double d2) { double atan2(double y, double x); double atan2(double i1, double d1); double atan2(double i2, double d2); //theta1 = kine(atan2(y,x),atan2(i1,i2),x,y,d1,d2,n1,n2,l1,l2); return 0; } ////////////目標位置計算///////// double kine(double x,double y, double theta1, double theta2, double d1, double d2, double l1, double l2,double i1,double i2) { return theta1; }*/ ////////////パラメータ調整部///////////////////////////////////////// int T=10;//制御周期(サンプリングタイム) 単位[ms] double Eq=5.5; //////////目標位置計算/////// /* double l1= 37; double l2 = 33; double x = 50; double y = 40; double n1 = x*x; double n2 = y*y; double d1 = (n1 + n2 + l1*l1 - l2*l2) / (2 * l1); double d2 = (n1 + n2 - l1*l1 + l2*l2) / (2 * l2); double i1 = sqrt( n1 + n2 - d1*d1); double i2 = sqrt( n1 + n2 - d2*d2); double theta1 = (atan2( y, x) - atan2( i1, d1))*180/PI; double theta2 = (atan2( i1, d1) + atan2( i2, d2))*180/PI; */ //double theta1 = 0; //double theta2 = 0; int P = 8;//通常動作時の中継点の数 int tf[10] = { 400, 300 ,400 ,250 ,250 ,190 ,250};//通常動作時の各中継点アーム動作時間 double Pa_q[4][10] = {{0, -30 , -30 ,0 ,0 , 0 , 0 , 0 , 0 , 0}, //各中継点の目標角度[deg](肩関節ピッチ軸) {0, 0 , 0 ,0 ,0 , 0 , 0 , 0 , 0 , 0}, //各中継点の目標角度[deg](肩関節ロール軸) {0, 0 , 0 ,0 ,0 , 0 , 0 , 0 , 0 , 0}}; //各中継点の目標角度[deg](肘関節) //{0, 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0}}; //各中継点の目標角度[deg](手部開閉) double Kp[4]={1.2 , 0.25 , 0.5 , 1.5}; //Pゲイン {肩部Roll,肩部Pittch,肘部,手部} double Ki[4]={0.01 , 0.015 , 0.015 , 0.015}; //Iゲイン {肩部Roll,肩部Pittch,肘部,手部} double Kv[4]={0.08 , 0.07 , 0.07 , 0}; //Dゲイン {肩部Roll,肩部Pittch,肘部,手部} double L_Kp[4]={1.8 , 0.25 , 0.25 , 1}; //Pゲイン {肩部Roll,肩部Pittch,肘部,手部} double L_Ki[4]={0.01 , 0.015 , 0.015 , 0.015}; //Iゲイン {肩部Roll,肩部Pittch,肘部,手部} double L_Kv[4]={0.2 , 0.07 , 0.07 , 0}; //Dゲイン {肩部Roll,肩部Pittch,肘部,手部} double Kp_e[4]={0.22 , 0.25 , 0.25 , 0}; //Pゲイン {肩部Roll,肩部Pittch,肘部,手部} double Ki_e[4]={0 , 0 , 0 , 0}; //Iゲイン {肩部Roll,肩部Pittch,肘部,手部} double Kv_e[4]={0 , 0 , 0 , 0}; //Dゲイン {肩部Roll,肩部Pittch,肘部,手部} int Twe=200;//衝撃緩和時のアーム動作待機時間[ms] int Tsh=250;//衝撃緩和後のアーム修正時間[ms] /////////////////////////////////////////////////////////////////// int mode=0;//作業モード番号 int flag=0;//動作フラグ(0=通常動作,1=軌道修正のモード) int Cflag=0;//衝突フラグ int t=0;//待機時間計測変数 double Ti=0;//ワールドタイム(0は初期時刻) WORD DA_Data[16]; DWORD dwDat,CNT[16],Cnt[16]; double ENCData[16];//エンコーダのデータ値 double O_ENCData[5000];//過去のエンコーダのデータ値 double d_ENCData[5000]; double Od_ENCData[5000]; double OCNTData[16]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; double Er[16]; double dEr[16]; double IntgEr[16]; double IntgEr_r[16]; double DAvolt[16];//D/Aの電圧値 単位[V] double O_Er[16]; double O_dEr[16]; double T_Er[16]; double T_dEr[16]; double T_IntgEr[16]; double TO_Er[16]; double TO_dEr[16]; double Igain; double LPF_Er[16]; double LPF_dEr[16]; double O_LPF_dEr[16]; double LPF_IntgEr[16]; double L_DAvolt[16]; double A_dEr[16]; double A_Kp[16]; double A_Kv[16]; double AD_Data[16];//ADのデータ値 double AD_volt[16];//圧力センサの値[V] double LAD_volt[16];//ローパスフィルタを掛けたセンサの値[V] double AD_kg[16];//LAD_volt[V]を[kg]に変換したもの double AD_Force[16];//ニュートン単位の出力 double loadCellData[100];//ロードセル基準点用サンプリングデータ double loadCellSum = 0; double loadCellOrigin = 0; bool isLCInitialize = true; int LCReadCounter = 0; double AD_pre[16]; double Test_DA[16]; int ENCch[16]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};//エンコーダのチャンネル番号 肩部ピッチ軸:4ch 肩部ヨー軸:0ch 肘:1ch 手首ヨ―:2ch 手首開閉:3ch  int DAch[16]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};//DAのチャンネル番号 肩部ピッチ軸:0 肩部ヨー軸:1ch 肘:2ch 手首ヨ―:3ch 手首開閉:4ch int ADch[16]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};//ADのチャンネル番号 各ADch(0-15) int fa_q[4];//(fa:armのフラグ)通常動作時のフラグ double a[16],b[16],c[16],e[16],T_a[16],T_b[16],T_c[16]; double L_a[16],L_b[16],L_c[16]; double A_a[16],A_c[16]; double qd[4][5000]; //通常動作時の目標軌道角度(多項式) double d_qd[4][5000];//通常動作時の目標軌道角速度(多項式) double dd_qd[4][5000];//通常動作時の目標軌道角加速度(多項式) double qr1[5000],qr2[5000],qr3[5000]; //軌道修正時の目標軌道角度(多項式) double d_qr1[5000],d_qr2[5000],d_qr3[5000];//軌道修正時の目標軌道角速度(多項式) double dd_qr1[5000],dd_qr2[5000],dd_qr3[5000];//軌道修正時の目標軌道角加速度(多項式) double cnt[5]; //センサー角度 int rflag=0,Recflag=0; int tu = 0;//通常動作時のタイム int tv = 0;//衝撃直後待機時のタイム int tw = 0;//軌道修正時のタイム int ts = 0;//軌道復帰後から次の目標角度までの必要時間 int th = 0;//各目標角度までのトータル時間 int tp[8];//tf[i]までのトータル時間 int w = 0; int c1 = 0,c2 = 0,c3 = 0; int r1,r2,r3; int d[4]; double rdh[4]={426 , 416 , 200 , 1870};//減速比+カウント {(300.0000*500.0000)/360.0000 , (300.0000*512.0000)/360.0000 , 0 , 430.000*500.000/360.000}; //double rdh[4]={426,200,416,597}; IB7_PARAINFO Ib7ParaInfo; IB7_PARAENC Ib7ParaEnc; IB7_PARADA Ib7ParaDa; IB7_PARAAD Ib7ParaAd; //////////// 軌道生成関数 ////////////////////////////////////////// int dpath(int z0,double tha,double thb,double tf,double Rd[],double dRd[],double DRd[]){//z0は初期時間,tfは最終時間 double a0,a1,a2,a3;//3次多項式係数 double dtha=0; double Dtha=0; double dthb=0; double Dthb=0; int z=0; int Z=0; int d=0; tf=tf; for(z=z0;z<=z0+tf;z++){//(z=z0+0;z<z0+tf;z++) a0 = tha; a1 = dtha; a2 = 3/pow(tf,2)*(thb-tha); a3 = -2/pow(tf,3)*(thb-tha); Rd[z] = a0+a1*(z-z0)+a2*pow(double(z-z0),2)+a3*pow(double(z-z0),3);//各時間においての目標角度 dRd[z] = a1+2*a2*(z-z0)+3*a3*pow(double(z-z0),2); //各時間においての目標角度 DRd[z] = 2*a2+6*a3*(z-z0); //各時間においての目標角加速度 Z = Z++; } d = z0+Z; return d; } void CALLBACK LCSetUpTimer(UINT uTimerID, UINT uMsg, DWORD dwUser,DWORD dw1, DWORD dw2) { printf("Correct No Weight Data.%i\n",LCReadCounter); if(LCReadCounter<100) { printf("checked\n"); Ib7ParaAd.ChData.ch =ADch[3]; if ( (ret=I7fAdRead(&Ib7ParaAd)) < 0 ) { printf("AD Read Error. ret=%i\n", ret); ret = -1; } AD_Data[3]=Ib7ParaAd.ChData.wData[0]; loadCellData[LCReadCounter]=20.0*AD_Data[3]/4096.0-10.0;//データ->電圧値(±10V入力レンジ) //LAD_volt[i]=(LAD_volt[i]+(double)T/1000*C*AD_volt[i])/(1.0+(double)T/1000*C);//デジタルローパスフィルタ //LAD_volt[i]=LAD_volt[i]/(1+(double)T*C)+(double)T*C*AD_volt[i]/(1+((double)T/1000)*C);//論文のフィルタ //LAD_volt[i]=LAD_volt[i]*0.8+(1-0.8)*AD_volt[i];//RCフィルタ //AD_kg[i]=4325.9*AD_volt[i]+0.1679; } LCReadCounter++; return; }

まだ下にプログラムは続きますが,エラーの出ている部分だけ,表示しました.

試したこと

エラーの①から⑪まではコメントアウトすることでエラー表示は消えましたが,正しいのかどうか不安です.
⑫は何をやっても,どう調べても解決方法が分かりません.
また①から⑪のほうで,コメントアウト以外の解決方法があれば教えて頂きたいです.

補足情報

プログラミングについて学び始めたばかりです.
調べたら出てくる内容もあるかと思いますが,一つ一つ細かく,少しでもいいので教えていただきたいです.
よろしくお願い致します.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dodox86

2021/05/21 10:32

質問のタグに「WSL」があるのですが、ここでいうUbuntu とはWSLのUbuntuのことを指していますか? それとも純粋(?)なLinuxマシンのUbuntuでしょうか。
退会済みユーザー

退会済みユーザー

2021/05/22 02:15

純粋な方だと思います
dodox86

2021/05/22 02:26 編集

UbuntuのLinuxが単独で動作している環境ということですね。その元プログラムは、何かしらGUIの操作画面があるのでしょうか。何かのウィンドウ、ダイアログボックスとかボタンとか。そうであると尚更、(他回答者さんからも意見をいただいていますが)Ubuntu/Linux上で動作させることは困難です。
dodox86

2021/05/22 03:36

どうも回答で云わんとしていることがあまり伝わっていないように思うのでコメントしますが: もしかすると質問者program-manさんは、そもそもWindows上のプログラムとLinux上のプログラムは同じ実行ファイル(Windowsで言うEXEファイル)であると思っているのでは。だから、「コンパイルに際してヘッダーファイルが無いのがおかしい」と思ってしまっているのでは。
退会済みユーザー

退会済みユーザー

2021/05/22 13:50

この質問をするまでそう思っていました。エラー箇所のファイル等をLinuxの方に移せれば動くと思っているのですが、それだけでは駄目だということですかね?
dodox86

2021/05/22 17:59

それだけではダメだということです。WindowsとUbuntu(Linux)ではプログラムが動く基盤であるOS自体が違い、例えば「int main() { printf("Hoge\n"); }」 と言うような簡単単純なC言語プログラムでも、コンパイル後の実行ファイルの形式と見えない部分の関数(API、システムコール)が違います。 Windows.h等のWindowsプログラミング専用のヘッダーファイルは通常、Windowsプログラミングの為の開発環境であるVisual Studio 2019等のをインストールすることで使えるようになります。(注:Linuxでも使えるVisual Source Codeとは違います) Visual Studio 2019がLinux用に存在しないことから分かるように、単純にWindows.hなどのテキストのヘッダーファイルだけ持ってきてコンパイルすればOK、な訳ではありません。その辺りのご理解が不充分であると、本質問での一答で終わるような話ではないです。
guest

回答5

0

Linux ubuntu16.04で C++の”角度を3次多項式で算出しPID制御で動作するプログラム”を実行しようとしています.
元々,windowsXP上で作成されたものだったのですが,指定されたファイルが見つからず,

無茶をやってはいけません。windows.hも、mmsystem.hも、Windows上でWindowsプログラミングをするための専用のヘッダーファイルです。

mmsystem.h header - Microsoft Docs

そのお使いのプログラムがWindows APIに依存した関数(API)を使っているのであれば、Ubuntu上で動作させることは不可能と思っていた方が良いです。コードを精査することで代替が可能な場合はあります。Wineプロジェクトを利用するとか、GUIに依存しないのであれば、置き換えるとか。

投稿2021/05/21 06:48

dodox86

総合スコア9183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/05/21 09:44

ご回答ありがとうございます。Windows APIを使っているかどうかはどのようにかくにんしたらいいのでしょうか?
dodox86

2021/05/21 10:11 編集

> Windows APIを使っているかどうかはどのようにかくにんしたらいいのでしょうか? それは色々方法があって、 ・windows.h、mmsystem.hを#includeしないようにしてコンパイル時警告が出るような関数があったらそれらをあたるとか、 ・C言語の標準関数らしくない名前のものがあったらそれらをあたるとか。(<らしい・らしくないも感覚でしかないのですが) 何にせよひとつひとつあたるしかありませんが、正直、C言語、プログラミングを学び始めの方には荷が重い作業のように思います。 全部のコードが提示されている訳ではないので(<しなくていいです)、Windows APIは意外と使っていないか、使っているとしても少しかもしれません。提示されているコードを見るとWORDやDWORD、CALLBACKと言うキーワードがありますが、これらはWindows.h内でtypedefなどで定義されています。 それらを使用するだけのためにヘッダーファイルを#includeしている可能性もあります。 [一部修正済み]
Bull

2021/05/21 13:02

> void CALLBACK LCSetUpTimer(UINT uTimerID, UINT uMsg, DWORD dwUser,DWORD dw1, DWORD dw2) という関数は Windows のタイマー関数のようです。 Ubuntu で動かすのはいろいろと大変そうですね。
guest

0

インクルードパスの設定ができていないのではないでしょうか?

投稿2021/05/21 06:20

Serbonis

総合スコア581

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/05/21 09:46

回答ありがとうございます。設定はどこからすればいいでしょうか?
guest

0

そのファイルが見つけられない、というエラーです。
そいつはどこにあるんでしょうか

投稿2021/05/21 05:25

y_waiwai

総合スコア87774

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/05/21 09:52

回答ありがとうございます。もしかしたらそのファイルが消えてしまっているかもしれません。 もし復元などができた場合どうすればいいでしょうか?
guest

0

プログラミングC言語についてです。僕はC++を使っているのですが... - Yahoo!知恵袋

Visual C++への依存度が高いもののようなので、
ファイルを持ってきてやり過ごす、ってのは通用しないかと。

投稿2021/05/21 05:25

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/05/21 09:53

回答ありがとうございます。ほかの方法などあれば教えていただきたいです。
Serbonis

2021/05/21 10:10

1.コンパイラオプションで指定する コンパイラがgccでしたら、-Iにヘッダの置いてあるディレクトリへのパスを指定します。 g++ -Iパス名 2.環境変数を設定する コンパイルのたびにオプションを設定する手間を省きたい場合は環境変数にパスを設定します。 わたしはLinuxに詳しくないので正確には知らないですがCPATHというのがそれにあたるようです。 このあたりは調べることも含めご自身で確認ください。
Serbonis

2021/05/21 10:28

他の方も指摘されていますが、エラーが出ている3つの<xxx.h>ファイル(①②③)はWindowsに依存するもので、お使いのLinuxには存在しないと思われます。上記のインクルードパスの指定は、ご自身で作成もしくは用意されているであろう"xxx.h"(④⑤)へパスを通すためのものです。この"xxx.h"そのものがないのであれば、このプログラムをコンパイルすることはまず不可能です。 仮にあると前提した場合、インクルードパスを設定することで⑧~⑪は解消されます。 ⑥⑦は適切に typedef すればいけると思います(例えば typedef UINT32 DWORD;とか) ⑫はとりあえず削除しておけばコンパイルは通ると思います。 提示されているコードは基本的に計算だけで、ウインドウ周りなどOSに依存する部分はひとまず不要だと思います。リアルタイムに関数を呼び出して計算することはひとまずおいておいて、計算式を動かして結果を出力するところまで修正されたらよいかと思います。
dodox86

2021/05/21 10:28

もともとWindows用のプログラムで、Windows上でビルドされていてWindows XP上で動いていたものを、今回Ubuntu16上でビルドし、Ubuntu16上で実行しようとしていることを忘れてはいけません。クロスコンパイルでもなく、プログラムの内容にもよりますが意外と難しいことです。
Serbonis

2021/05/21 10:31

>⑫はとりあえず削除しておけば ⑫はCALLBACKをとりあえず削除しておけば
guest

0

そのプログラムを使うことが目的なら、おとなしくWindowsPCを使いましょう。
もしかすると、Windows10でもそのまま動くかも知れません。

Linuxを使うことが必須なら、そのプログラムはあきらめましょう。

投稿2021/05/21 15:00

otn

総合スコア84555

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/05/22 02:41

回答ありがとうございます。Linuxでは動きませんか、、、 同じようなプログラムを作るためにはどこを変えるべきでしょうか?
otn

2021/05/22 04:52

どこを変えるというか、一から作るのでは?
退会済みユーザー

退会済みユーザー

2021/05/22 13:44

なるほど、ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問