Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pre Release (v3.8.0-beta.6): Use standard stdint.h #511

Merged
merged 8 commits into from
Mar 16, 2023

Conversation

sksat
Copy link
Collaborator

@sksat sksat commented Mar 8, 2023

概要

標準(C99)の stdint.h が存在する場合はできるだけ使うようにする

Issue

NA

詳細

  • 今後 C2A(core, user の双方)では,#include <stdint.h> で C99 stdint.h 相当 のヘッダが使えることを要求する
  • CMake option として C2A_USE_C99_STDINT を追加し,default ON とする
  • C89 ターゲット用に,ラッパーとして src_core/Library/stdint_wrapper/stdint.h を追加する
  • 各 C2A user に存在した src_user/Library/stdint.h は削除する
    • C89 ターゲットのために残さなければならない場合は,src_user/Library/stdint_impl.h に rename する
  • それぞれの環境下での対応は以下
    • C99 が使える環境: なにもせずとも #include <stdint.h> して本物の stdint.h が使えることが期待できる(仮にC89 指定したとしても)
    • C89 ターゲットの C2A user:
      • src_core/Library/stdint_wrapper/stdint.h を使う
        • ビルドシステム上で src_core/Library/stdint_wrapper を include path に加える
        • CMake の場合は C2A_USE_C99_STDINT=OFF を指定するとよい
      • これは src_user/Library/stdint_impl.h を使う(C2A user 側で提供する必要がある)
      • この場合であっても,SILS_FW 時は C99 stdint.h が使えることが期待できるので,使う

背景

  • C2A は C89 環境下でビルドされることもある
    • なのでC2A core では基本的には C99 の機能を迂闊に使えない
    • ↑の環境で使えるもの,例えば1行コメントなどは使っている
    • そのため,"C89 に準拠しないといけない" というわけではない(し,既に準拠はしていない)
  • stdint.h が標準規格に入ったのは C99 からなので,↑の環境のために C2A user 側で stdint.h が提供されてきた
    • これが src_user/Library/stdint.h
  • stdint.h で定義されるような内容はビルドターゲットから一意に定まる内容であって,ビルド設定の一種
  • しかし,stdint.h が与える整数型は(当然)あらゆる場所で使う
    • これは C2A core も含まれるので,C2A core から C2A user の src_user/Library/stdint.h への依存が多数発生している
    • core -> user の依存はできる限りなくすべき
    • core -> user の依存と,{core, user} -> ビルドターゲット の依存は区別して扱うべき

影響範囲

  • 本当にC89な環境など,でこれまでのユーザー定義 stdint .h (src_user/Library/stdint.h)が必要な場合は,それを include directory にたす必要がある

備考

この取り込みをuser側で使いたいため,pre releaseする

@sksat sksat added enhancement New feature or request priority::medium priority medium tools labels Mar 8, 2023
@sksat sksat self-assigned this Mar 8, 2023
@sksat sksat marked this pull request as ready for review March 8, 2023 12:12
@sksat sksat requested a review from meltingrabbit March 8, 2023 12:12
@meltingrabbit
Copy link
Collaborator

@sksat sksat force-pushed the feature/use-std-stdint branch from d03fd25 to f85b539 Compare March 16, 2023 09:37
@meltingrabbit meltingrabbit changed the title Use standard stdint.h Use standard Pre Release (v3.8.0-beta.6): stdint.h Mar 16, 2023
@sksat
Copy link
Collaborator Author

sksat commented Mar 16, 2023

#520 がマージされて conflict してるので,rebase

@sksat sksat force-pushed the feature/use-std-stdint branch from 366f5a0 to 0c810ae Compare March 16, 2023 09:44
@meltingrabbit
Copy link
Collaborator

src_user/stdint.h x 2 を消すべき

Copy link
Collaborator

@meltingrabbit meltingrabbit left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

よさそう

@meltingrabbit
Copy link
Collaborator

マージする前にバージョン上げてね

@sksat sksat merged commit e4143ed into develop Mar 16, 2023
@sksat sksat deleted the feature/use-std-stdint branch March 16, 2023 10:01
@meltingrabbit meltingrabbit changed the title Use standard Pre Release (v3.8.0-beta.6): stdint.h Pre Release (v3.8.0-beta.6): Use standard stdint.h Mar 16, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request priority::medium priority medium tools
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants