Tihiroのストレスフリーな生活

少しだけ頭使って後は根性

C言語

makeとかautomakeとかcmakeとかが難しい。

超ざっくりな脳内分類。makeとかautomakeとかcmakeとか分けわかんないです。 makeとか makeコマンド → Makefileを読み込んでコンパイルする。更新分だけコンパイルできるので経済的。 Makefile → コンパイルの手順書 make installコマンド → makeコマンドで…

C言語で文字列の長さを測りたい

結論 sizeofではなくてstrlenを使う。 呼び出し側 void testA() { testB("test_string"); } # 呼び出され側 ## OK void testB(char* testStr) { int size = strlen(testStr); // size = 文字列の長さ(11)となる } NG void testB(char* testStr) { int size =…

C言語で文字列をセットしたい。それも関数で。

概要 C言語です。いまだに文字列の扱いに慣れないので、自分用メモとしておいておきます。 やりたいことは、文字列をセットする関数を作りたいってことです。 コード 呼び出し側 void testMain() { char* str; setStr(&str); printf("%s", str); free(str); …

Visual Studio Express 2017 for Windows Desktopでエラー発生。

概要 たまにVisual Studioも操作します。久しぶりに起動するとなぜかエラー。困ります。 環境 Visual Studio Express 2017 for Windows Desktop エラーと対応 エラー内容 構文エラー: トークン '識別子' は予期されておらず、'型指定子' が予期されています …

C言語で関数の引数は別アドレスが用意される模様。

伝えたいこと すっごい例コードが悪いですが、下記のmain関数内のcpとtest関数内のcpは違うアドレスに確保される模様。要は参照渡し的なことをしたかったけど、そんなことになってませんよ。っていうお話。 void test(char* cp) { printf("2:%p \n", &cp); }…

did you mean 'int32'?

概要 Eclipseの内部コンパイラーを使って、C言語プログラムをコンパイルしたらエラー。 環境 Windows 7.1 Eclipse Neon エラー内容 error: unknown type name 'int64'; did you mean 'int32'? extern Datum Int64GetDatum(int64 X); ^~~~~ int32 的なのが発…

C言語のポインタとか文法的なお話

概要 C言語を学ぶ上で弊害となりやすいと噂のポインタについてのお話です。実際のところはポインタというより、C言語の文法が分かりにくいだけなんじゃ? という感じです。 ポインタと文法 の前に通常の変数について ポインタ型との比較用に通常の変数につい…

MAX_PATHがここで宣言されていませんエラー。

概要 Linuxでgccを利用してCプログラムをコンパイルした際に発生したエラーの対策。 エラー内容 error ‘max_path’ was not declared in this scope こんな感じです。 エラー: ‘MAX_PATH’ がここでは宣言されていません (関数内ではない) 日本語ですと、こん…

getpidがエラーとなる。

概要 C言語でプロセスIDを取得するための「getpid」がコンパイルエラーになる。。 内容 'getpid': The POSIX name for this item is deprecated. Instead, use the ISO C and C++ conformant name: _getpid. See online help for details. とかいうエラーが…

OCIORA-03137について(CentOS7+instantclient12.2)

概要 最近、C言語始めました。ということでOCIとかいうオラクル接続用のインターフェースがあるんですが、それを利用してINSERTやUPDATE文を実行した際に Error - ORA-03137: malformed TTC packet from client rejected: [kpoal8Check-5] [32768] [0x000000…