SlideShare una empresa de 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

Más contenido relacionado

Destacado

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
 

Destacado (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
 

Similar 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
 

Similar 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
 

Más 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
 

Más 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

Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
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
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 

Último (20)

Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
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...
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 

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 del editor

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