SlideShare uma empresa Scribd logo
1 de 15
Designing a Module and Type Safe Linking For C For Documentation and Downloads Visit
CMod: A module system for C ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],CMod priv A pub A priv B pub B s : t 1 -> t 2 s : t 1 -> t 2
The Objective ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],CMod
Violating Modularity Properties CMod bitmap.h: struct  BM; void  init( struct  BM *); void  set( struct  BM *,  int ); bitmap.c: struct  BM {  int  data; }; void  set( struct  BM *map,  int  bit) { … }  void  privatefn( void ) { … } Provider Client main.c: #include  “bitmap.h” int  main( void ) { struct  BM *bitmap; init ( bitmap ); set ( bitmap , 1 ); … } int  main( void ) { struct  BM *bitmap; init ( bitmap ); set ( bitmap , 1 ); … } void  init( struct  BM *map ,  int  val ) { … } extern void  privatefn( void ); privatefn(); struct  BM {  int  *data; }; bitmap .data  = … #include  “bitmap.h”   void  init( struct  BM *map) { … } Interface--Implementation  disconnect Violating Type Abstraction Accessing Private Functions Bottom-line: Compiler happy, but information hiding type-safe linking not guaranteed
Example Rule; Rule1: Shared Headers ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],CMod Whenever one file links to a symbol defined by another file, both must include a header that declares the symbol.
CMod symbols type Rule 1:  Shared Headers Rule 2:  Type Ownership preprocessor  interaction ???
Preprocessor configuration CMod Provider switches  between two versions  of the implementation  depending on the flag COMPACT The order of these  includes is important Its important that  both files be compiled  with the same -D flags
Consistent Interpretation ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],CMod
[object Object],[object Object],CMod symbols type gcc type safety + inf hiding?  no Rules 1,2 Rules 3,4 preprocessor  interaction gcc type safety + inf hiding?
CMod Properties ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],CMod Information Hiding
Experimental Results ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],CMod
Experiments: Example Violation ,[object Object],CMod bgpd/bgpd.c: void bgp_init () { void bgp_zebra_init (); … /* Init zebra. */ bgp_zebra_init (); … } bgpd/bgp_zebra.c: void bgp_zebra_init (int enable) { … } Provider Client
Summary ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],CMod
Conclusion ,[object Object],[object Object],[object Object],[object Object],FindBugs
Queries FindBugs For Documentation and Downloads Visit

Mais conteúdo relacionado

Destaque

School union’s sport day
School union’s sport daySchool union’s sport day
School union’s sport dayPaksorn Runlert
 
Seguridad informática.cristi
Seguridad informática.cristiSeguridad informática.cristi
Seguridad informática.cristicarmelacaballero
 
Entrevista com Léo Montenegro para o Jornal O Regional - Catanduva-SP
Entrevista com Léo Montenegro para o Jornal O Regional - Catanduva-SPEntrevista com Léo Montenegro para o Jornal O Regional - Catanduva-SP
Entrevista com Léo Montenegro para o Jornal O Regional - Catanduva-SPPublica Livros
 
BICBANCO - Apresentação Institucional - Dezembro 2007
BICBANCO - Apresentação Institucional - Dezembro 2007BICBANCO - Apresentação Institucional - Dezembro 2007
BICBANCO - Apresentação Institucional - Dezembro 2007BICBANCO
 
Revista becas de verano en Francia
Revista becas de verano en FranciaRevista becas de verano en Francia
Revista becas de verano en FranciaEnlaceswebs
 
Deal Flow Indicator Report Q409
Deal Flow Indicator Report Q409Deal Flow Indicator Report Q409
Deal Flow Indicator Report Q409Alasdair Kilgour
 
Get Google Maps EMBED iframe Code
Get Google Maps EMBED iframe CodeGet Google Maps EMBED iframe Code
Get Google Maps EMBED iframe CodeJan Mikael Granner
 
BICBANCO - Reunião APIMEC - SP 2009
BICBANCO - Reunião APIMEC - SP 2009BICBANCO - Reunião APIMEC - SP 2009
BICBANCO - Reunião APIMEC - SP 2009BICBANCO
 
Seguridad informática
Seguridad informática Seguridad informática
Seguridad informática XeniaMeixus
 
07 voila-comment-nous-allons-tous-finir-avec-l'informatique
07 voila-comment-nous-allons-tous-finir-avec-l'informatique07 voila-comment-nous-allons-tous-finir-avec-l'informatique
07 voila-comment-nous-allons-tous-finir-avec-l'informatiqueDominique Pongi
 
The Battle Against DDoS | DDoS Attack Statistics
The Battle Against DDoS | DDoS Attack StatisticsThe Battle Against DDoS | DDoS Attack Statistics
The Battle Against DDoS | DDoS Attack StatisticsState of the Internet
 
Hagamos papel reciclado
Hagamos papel reciclado Hagamos papel reciclado
Hagamos papel reciclado danileudo
 
Kingfisher airlines
Kingfisher airlinesKingfisher airlines
Kingfisher airlinesshibasbehera
 

Destaque (14)

School union’s sport day
School union’s sport daySchool union’s sport day
School union’s sport day
 
Seguridad informática.cristi
Seguridad informática.cristiSeguridad informática.cristi
Seguridad informática.cristi
 
Entrevista com Léo Montenegro para o Jornal O Regional - Catanduva-SP
Entrevista com Léo Montenegro para o Jornal O Regional - Catanduva-SPEntrevista com Léo Montenegro para o Jornal O Regional - Catanduva-SP
Entrevista com Léo Montenegro para o Jornal O Regional - Catanduva-SP
 
BICBANCO - Apresentação Institucional - Dezembro 2007
BICBANCO - Apresentação Institucional - Dezembro 2007BICBANCO - Apresentação Institucional - Dezembro 2007
BICBANCO - Apresentação Institucional - Dezembro 2007
 
Revista becas de verano en Francia
Revista becas de verano en FranciaRevista becas de verano en Francia
Revista becas de verano en Francia
 
Deal Flow Indicator Report Q409
Deal Flow Indicator Report Q409Deal Flow Indicator Report Q409
Deal Flow Indicator Report Q409
 
Get Google Maps EMBED iframe Code
Get Google Maps EMBED iframe CodeGet Google Maps EMBED iframe Code
Get Google Maps EMBED iframe Code
 
BICBANCO - Reunião APIMEC - SP 2009
BICBANCO - Reunião APIMEC - SP 2009BICBANCO - Reunião APIMEC - SP 2009
BICBANCO - Reunião APIMEC - SP 2009
 
Ana benitez powerpoint
Ana benitez powerpointAna benitez powerpoint
Ana benitez powerpoint
 
Seguridad informática
Seguridad informática Seguridad informática
Seguridad informática
 
07 voila-comment-nous-allons-tous-finir-avec-l'informatique
07 voila-comment-nous-allons-tous-finir-avec-l'informatique07 voila-comment-nous-allons-tous-finir-avec-l'informatique
07 voila-comment-nous-allons-tous-finir-avec-l'informatique
 
The Battle Against DDoS | DDoS Attack Statistics
The Battle Against DDoS | DDoS Attack StatisticsThe Battle Against DDoS | DDoS Attack Statistics
The Battle Against DDoS | DDoS Attack Statistics
 
Hagamos papel reciclado
Hagamos papel reciclado Hagamos papel reciclado
Hagamos papel reciclado
 
Kingfisher airlines
Kingfisher airlinesKingfisher airlines
Kingfisher airlines
 

Semelhante a Cmod

Introduction-to-C-Part-1.pptx
Introduction-to-C-Part-1.pptxIntroduction-to-C-Part-1.pptx
Introduction-to-C-Part-1.pptxNEHARAJPUT239591
 
Introduction-to-C-Part-1 JSAHSHAHSJAHSJAHSJHASJ
Introduction-to-C-Part-1 JSAHSHAHSJAHSJAHSJHASJIntroduction-to-C-Part-1 JSAHSHAHSJAHSJAHSJHASJ
Introduction-to-C-Part-1 JSAHSHAHSJAHSJAHSJHASJmeharikiros2
 
embeddedc-lecture1-160404055102.pptx
embeddedc-lecture1-160404055102.pptxembeddedc-lecture1-160404055102.pptx
embeddedc-lecture1-160404055102.pptxsangeetaSS
 
Introduction-to-C-Part-1 (1).doc
Introduction-to-C-Part-1 (1).docIntroduction-to-C-Part-1 (1).doc
Introduction-to-C-Part-1 (1).docMayurWagh46
 
C++ helps you to format the I/O operations like determining the number of dig...
C++ helps you to format the I/O operations like determining the number of dig...C++ helps you to format the I/O operations like determining the number of dig...
C++ helps you to format the I/O operations like determining the number of dig...bhargavi804095
 
02 c++g3 d
02 c++g3 d02 c++g3 d
02 c++g3 dmahago
 
C++ was developed by Bjarne Stroustrup, as an extension to the C language. cp...
C++ was developed by Bjarne Stroustrup, as an extension to the C language. cp...C++ was developed by Bjarne Stroustrup, as an extension to the C language. cp...
C++ was developed by Bjarne Stroustrup, as an extension to the C language. cp...bhargavi804095
 
Introduction to directshow II
Introduction to directshow IIIntroduction to directshow II
Introduction to directshow IIYoss Cohen
 
HIS 2017 Mark Batty-Industrial concurrency specification for C/C++
HIS 2017 Mark Batty-Industrial concurrency specification for C/C++HIS 2017 Mark Batty-Industrial concurrency specification for C/C++
HIS 2017 Mark Batty-Industrial concurrency specification for C/C++jamieayre
 
Basics of c# by sabir
Basics of c# by sabirBasics of c# by sabir
Basics of c# by sabirSabir Ali
 
Parallelization and Optimization of Time-Domain Electronic Scattering Simulat...
Parallelization and Optimization of Time-Domain Electronic Scattering Simulat...Parallelization and Optimization of Time-Domain Electronic Scattering Simulat...
Parallelization and Optimization of Time-Domain Electronic Scattering Simulat...Michael Patterson
 
Legacy of Void*
Legacy of Void*Legacy of Void*
Legacy of Void*Adam Crain
 
Microsoft .NET Platform
Microsoft .NET PlatformMicrosoft .NET Platform
Microsoft .NET PlatformPeter R. Egli
 
Beginning direct3d gameprogramming03_programmingconventions_20160414_jintaeks
Beginning direct3d gameprogramming03_programmingconventions_20160414_jintaeksBeginning direct3d gameprogramming03_programmingconventions_20160414_jintaeks
Beginning direct3d gameprogramming03_programmingconventions_20160414_jintaeksJinTaek Seo
 
Introduction-to-C-Part-1.pdf
Introduction-to-C-Part-1.pdfIntroduction-to-C-Part-1.pdf
Introduction-to-C-Part-1.pdfAnassElHousni
 
Basics of C Lecture 2[16097].pptx
Basics of C Lecture 2[16097].pptxBasics of C Lecture 2[16097].pptx
Basics of C Lecture 2[16097].pptxCoolGamer16
 

Semelhante a Cmod (20)

Introduction-to-C-Part-1.pptx
Introduction-to-C-Part-1.pptxIntroduction-to-C-Part-1.pptx
Introduction-to-C-Part-1.pptx
 
Introduction-to-C-Part-1 JSAHSHAHSJAHSJAHSJHASJ
Introduction-to-C-Part-1 JSAHSHAHSJAHSJAHSJHASJIntroduction-to-C-Part-1 JSAHSHAHSJAHSJAHSJHASJ
Introduction-to-C-Part-1 JSAHSHAHSJAHSJAHSJHASJ
 
embeddedc-lecture1-160404055102.pptx
embeddedc-lecture1-160404055102.pptxembeddedc-lecture1-160404055102.pptx
embeddedc-lecture1-160404055102.pptx
 
Introduction-to-C-Part-1 (1).doc
Introduction-to-C-Part-1 (1).docIntroduction-to-C-Part-1 (1).doc
Introduction-to-C-Part-1 (1).doc
 
C++Basics2022.pptx
C++Basics2022.pptxC++Basics2022.pptx
C++Basics2022.pptx
 
Embedded C - Lecture 1
Embedded C - Lecture 1Embedded C - Lecture 1
Embedded C - Lecture 1
 
02 c++g3 d (1)
02 c++g3 d (1)02 c++g3 d (1)
02 c++g3 d (1)
 
C++ helps you to format the I/O operations like determining the number of dig...
C++ helps you to format the I/O operations like determining the number of dig...C++ helps you to format the I/O operations like determining the number of dig...
C++ helps you to format the I/O operations like determining the number of dig...
 
02 c++g3 d
02 c++g3 d02 c++g3 d
02 c++g3 d
 
C++ was developed by Bjarne Stroustrup, as an extension to the C language. cp...
C++ was developed by Bjarne Stroustrup, as an extension to the C language. cp...C++ was developed by Bjarne Stroustrup, as an extension to the C language. cp...
C++ was developed by Bjarne Stroustrup, as an extension to the C language. cp...
 
Introduction to directshow II
Introduction to directshow IIIntroduction to directshow II
Introduction to directshow II
 
HIS 2017 Mark Batty-Industrial concurrency specification for C/C++
HIS 2017 Mark Batty-Industrial concurrency specification for C/C++HIS 2017 Mark Batty-Industrial concurrency specification for C/C++
HIS 2017 Mark Batty-Industrial concurrency specification for C/C++
 
Basics of c# by sabir
Basics of c# by sabirBasics of c# by sabir
Basics of c# by sabir
 
Parallelization and Optimization of Time-Domain Electronic Scattering Simulat...
Parallelization and Optimization of Time-Domain Electronic Scattering Simulat...Parallelization and Optimization of Time-Domain Electronic Scattering Simulat...
Parallelization and Optimization of Time-Domain Electronic Scattering Simulat...
 
Legacy of Void*
Legacy of Void*Legacy of Void*
Legacy of Void*
 
Microsoft .NET Platform
Microsoft .NET PlatformMicrosoft .NET Platform
Microsoft .NET Platform
 
Beginning direct3d gameprogramming03_programmingconventions_20160414_jintaeks
Beginning direct3d gameprogramming03_programmingconventions_20160414_jintaeksBeginning direct3d gameprogramming03_programmingconventions_20160414_jintaeks
Beginning direct3d gameprogramming03_programmingconventions_20160414_jintaeks
 
C++ Constructs.pptx
C++ Constructs.pptxC++ Constructs.pptx
C++ Constructs.pptx
 
Introduction-to-C-Part-1.pdf
Introduction-to-C-Part-1.pdfIntroduction-to-C-Part-1.pdf
Introduction-to-C-Part-1.pdf
 
Basics of C Lecture 2[16097].pptx
Basics of C Lecture 2[16097].pptxBasics of C Lecture 2[16097].pptx
Basics of C Lecture 2[16097].pptx
 

Mais de Presentaionslive.blogspot.com

A multimodal interaction framework for pervasive game applications
A   multimodal   interaction   framework   for pervasive   game   applicationsA   multimodal   interaction   framework   for pervasive   game   applications
A multimodal interaction framework for pervasive game applicationsPresentaionslive.blogspot.com
 

Mais de Presentaionslive.blogspot.com (20)

Cloud Computing Introduction
Cloud Computing IntroductionCloud Computing Introduction
Cloud Computing Introduction
 
Phis
PhisPhis
Phis
 
Network security
Network securityNetwork security
Network security
 
Mobile computing
Mobile computingMobile computing
Mobile computing
 
Honeypots
HoneypotsHoneypots
Honeypots
 
Grid computing
Grid computingGrid computing
Grid computing
 
Networksecurity&cryptography
Networksecurity&cryptographyNetworksecurity&cryptography
Networksecurity&cryptography
 
Brain computer interface
Brain computer interfaceBrain computer interface
Brain computer interface
 
Information Security
Information SecurityInformation Security
Information Security
 
4g magic communication
4g magic communication4g magic communication
4g magic communication
 
Steganography
Steganography Steganography
Steganography
 
Spattern matching using biometric techniques
Spattern matching using biometric techniquesSpattern matching using biometric techniques
Spattern matching using biometric techniques
 
Novel architecture
Novel architectureNovel architecture
Novel architecture
 
Neural networks
Neural networksNeural networks
Neural networks
 
Multimedia and gaming
Multimedia and gamingMultimedia and gaming
Multimedia and gaming
 
Ethical hacking
Ethical hackingEthical hacking
Ethical hacking
 
A multimodal interaction framework for pervasive game applications
A   multimodal   interaction   framework   for pervasive   game   applicationsA   multimodal   interaction   framework   for pervasive   game   applications
A multimodal interaction framework for pervasive game applications
 
1 spattern matching using biometric techniques
1 spattern matching using biometric techniques1 spattern matching using biometric techniques
1 spattern matching using biometric techniques
 
Honeypots
HoneypotsHoneypots
Honeypots
 
Unique p mail-addressing 97-03
Unique p mail-addressing 97-03Unique p mail-addressing 97-03
Unique p mail-addressing 97-03
 

Último

Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...apidays
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024The Digital Insurer
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024The Digital Insurer
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfOverkill Security
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Zilliz
 

Último (20)

Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 

Cmod

  • 1. Designing a Module and Type Safe Linking For C For Documentation and Downloads Visit
  • 2.
  • 3.
  • 4. Violating Modularity Properties CMod bitmap.h: struct BM; void init( struct BM *); void set( struct BM *, int ); bitmap.c: struct BM { int data; }; void set( struct BM *map, int bit) { … } void privatefn( void ) { … } Provider Client main.c: #include “bitmap.h” int main( void ) { struct BM *bitmap; init ( bitmap ); set ( bitmap , 1 ); … } int main( void ) { struct BM *bitmap; init ( bitmap ); set ( bitmap , 1 ); … } void init( struct BM *map , int val ) { … } extern void privatefn( void ); privatefn(); struct BM { int *data; }; bitmap .data = … #include “bitmap.h” void init( struct BM *map) { … } Interface--Implementation disconnect Violating Type Abstraction Accessing Private Functions Bottom-line: Compiler happy, but information hiding type-safe linking not guaranteed
  • 5.
  • 6. CMod symbols type Rule 1: Shared Headers Rule 2: Type Ownership preprocessor interaction ???
  • 7. Preprocessor configuration CMod Provider switches between two versions of the implementation depending on the flag COMPACT The order of these includes is important Its important that both files be compiled with the same -D flags
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15. Queries FindBugs For Documentation and Downloads Visit

Notas do Editor

  1. Why would should anybody care. Why should C be important.